c#泛型类型继承

本文关键字:继承 泛型类型 | 更新日期: 2023-09-27 17:52:12

是否有可能创建一个泛型class<T>,其泛型T将是它的base class ?

即:

MyClass<Base1> b1 = new MyClass<Base1>();
MyClass<Base2> b2 = new MyClass<Base2>();
b1.Name="test";
b2.ID=1;

基类:

class Base1
{
   protected string Name{ get; set;}
}
class Base2
{
   protected int ID{ get; set;}
}

继承类:

class MyClass<T>:T //here is the question is it possible dynamic inheritence
{
}

c#泛型类型继承

可以在T上使用约束,从而强制T为基类类型,如:

public class baseclass
{
    // base class code
}
// perfectly valid
public class derived1<T> : baseclass where T : baseclass
{
    // derived class code
}

不可能编译下面的代码,因为T是一个类型参数,编译器必须从用法中推断它。显然不能这样做。

public class derived2<T> : T
{
    // derived class code
}