声明抽象类类型的属性

时间:2017-04-20 16:37:01

标签: c#

我有一个抽象类:

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> };

1 个答案:

答案 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();
 }