【发布时间】:2013-11-29 15:13:11
【问题描述】:
假设我们有以下类:
class BaseClass
{
public BaseClass()
{
//sth to do
HERE I WOULD LIKE TO KNOW WHICH CHILD CLASS INVOKES BASE CONSTRUCTOR
}
}
class ChildClass : BaseClass
{
public ChildClass() : base() {}
}
如上所述,我想在运行时找出哪个子类调用了基类构造函数?
【问题讨论】:
-
应该
public BaseClass()是public ChildClass()? -
给定
class Base、class Derived1 : Base、class Derived2 : Derived1,将是Derived1的构造函数调用Base的构造函数,但对象的类型为Derived2。你想看前者还是后者? -
老实说,这听起来像是个坏主意(TM)。基类不必知道其继承者的任何信息即可正常运行。您要解决的具体问题是什么?
-
this.GetType()就够了吗? (注意:在多级层次结构中,这将始终给出具体类型,而不是直接子类型) -
我同意@lc。这是一个 XY 问题。你想做什么?
标签: c# constructor base