我有以下情况:
class Base<T>
class Derived : Base<Derived>
我知道基类知道谁是子类是一种不好的做法。我想实现一个Singleton基类,为此,基类必须知道谁是派生类,所以请不要评论这个不好的做法。
有没有办法获取派生类类型?
使用反射获取类型显然是有问题的,因为反射是静态的,并且您无法涵盖多个派生类的情况。
编辑:也许我不够清楚。我的意思是我希望能够继承基类而不指定泛型参数。将自己传递给基类有点愚蠢答案 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>