从基类获取派生类的类型

时间:2015-01-30 21:38:28

标签: c# generics inheritance reflection

我有以下情况:

class Base<T>
class Derived : Base<Derived>

我知道基类知道谁是子类是一种不好的做法。我想实现一个Singleton基类,为此,基类必须知道谁是派生类,所以请不要评论这个不好的做法。

有没有办法获取派生类类型?

使用反射获取类型显然是有问题的,因为反射是静态的,并且您无法涵盖多个派生类的情况。

编辑:也许我不够清楚。我的意思是我希望能够继承基类而不指定泛型参数。将自己传递给基类

有点愚蠢

2 个答案:

答案 0 :(得分:1)

不确定您要查找的内容,但基类中的代码在用作派生类的一部分时知道其类型:

class C1 
{
   public C1() { Console.WriteLine(this.GetType().Name);}
}
class C2: C1 {  }

new C2(); // writes C2 from C1's constructor.

答案 1 :(得分:0)

如果您想要RuntimeType T,请使用Type derivedType = typeof(T)

中的Base<T>