我有一个抽象类:
public abstract class BaseClass<T> { ... }
我有一些继承类:
public Class1<T>: BaseClass<T> { ... }
public Class2<T>: BaseClass<T> { ... }
我想定义一个属性来保存我的继承类,我该怎么做?
public class API{
public BaseClass<T> MyClass { get; set; }
}
我想这样称呼:
new API { MyClass = new Class1<MyT> };
答案 0 :(得分:0)
您的方法不起作用,因为API类不具有泛型类型,仍然使用 T '尚未定义
您可以使用以下任何方法更正问题
public class API{
public BaseClass<MyT> MyClass { get; set; }
}
或强>
public class API<T> {
public BaseClass<T> MyClass { get; set; }
}
new API<MyT> { MyClass = new Class1<MyT>() };
如果您想要检查类型>>,>>,可以使用 is
关键字。
obj **is** Class2<T>
例如
if (obj is Class2<MyT>)
{
// Do whatever is it that you want with the object.
// If you want to use the object as Class2, you can simply cast it
// to Class2 by using
((Class2<MyT>)obj).methodForOnlyClass2();
}