具有generics构造函数的generics类?
我有一个通用类。 构造函数需要接受一个参数,该参数是同一个类的另一个实例。 问题是另一个实例可以有不同的generics类型。
看起来C#允许我有一个带有它自己的generics类型的方法,但这似乎不允许构造函数。
public class MyClass { public MyClass(MyClass parent = null) { } // ... Additional stuff }
上面的代码告诉我T2
未定义。 它不接受它作为方法类型。
一种方法是在我的class级中添加第二种通用类型。 但这很尴尬,在很多情况下,参数将为null
并且没有类型。
有没有人看到这个简单的方法?
你是对的。 不支持通用构造函数。
您可以尝试以下方法:
创建较低级别的通用界面
public interface IMyClass { //...some common stuff IMyClass Parent { get; set; } }
并将其用作类型之间的通用链接
public class MyClass : IMyClass { public MyClass(IMyClass parent = null) { Parent = parent; } public IMyClass Parent { get; set; } // ... Additional stuff }
不允许使用通用构造函数。 但是,您可以使用通用工厂方法。
public class MyClass { public int Id { get; private set; } public int? ParentId { get; private set; } public static MyClass Create(int id) { return Create
样品用途:
var intClass = MyClass.Create(55); var charClass = MyClass.Create(234, intClass); // charClass.ParentId is 55
只有在您不需要访问工厂方法之外的任何parent
通用成员时,才可以执行此操作。 如果这样做,最好通过非generics接口或基类来抽象它。