【发布时间】:2011-01-18 06:15:51
【问题描述】:
如何获取继承类的Type 并将其传递给同样继承的类的基构造函数?请参阅下面的代码示例:
// VeryBaseClass is in an external assembly
public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
}
}
// BaseClass and InheritedClass are in my assembly
public abstract class BaseClass : VeryBaseClass
{
public BaseClass(MyObject myObject) :
base(this.GetType().Name, myObject) // can't reference "this" (Type expected)
{
}
}
public class InheritedClass : BaseClass
{
public InheritedClass(MyObject myObject)
{
}
}
base(typeof(this).Name, myObject) 行不起作用,因为我还不能引用 this,因为对象尚未完成构造,因此不存在。
是否可以抓取当前构造对象的Type?
编辑:
将示例更正为orsogufo suggested,但仍然无法正常工作,因为this 未定义。
编辑 2:
澄清一下,我想最终将"InheritedClass" 传递给VeryBaseClass(string className, MyObject myObject) 构造函数。
【问题讨论】:
-
为什么要这样做?构造函数不应该关心它是被调用来实例化自己的类还是派生类。
-
我认为你没有抓住重点。定义我使用的框架的基类的外部程序集需要将自身类的字符串表示形式传递给构造函数。到目前为止,我一直按照您的预期(作为字符串)将其放入,但为了理智,我希望它能够在运行时解决。
-
哦,我明白了,这不是你的课。我仍然认为它在乎是一件坏事:)
标签: c# inheritance constructor types