我有一个通用类。构造函数需要接受一个参数,该参数是同一类的另一个实例。问题在于另一个实例可以具有不同的泛型类型。
看起来C#允许我有一个具有自己的泛型类型的方法,但构造方法似乎不允许这样做。
public class MyClass<T>
{
public MyClass<T2>(MyClass<T2> parent = null)
{
}
// ... Additional stuff
}
上面的代码告诉我T2
未定义。它不接受它作为方法类型。
一种方法是在类中添加第二个泛型类型。但这很尴尬,并且在许多情况下,参数将是null
且没有类型。
有谁看到解决这个问题的简单方法?
你是对的。不支持泛型构造函数。
您可以尝试以下方法:
创建一个较低级别的通用接口
public interface IMyClass {
//...some common stuff
IMyClass Parent { get; set; }
}
并将其用作类型之间的通用链接
public class MyClass<T> : IMyClass {
public MyClass(IMyClass parent = null) {
Parent = parent;
}
public IMyClass Parent { get; set; }
// ... Additional stuff
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句