gpt4 book ai didi

c# - 将当前对象类型传递给基本构造函数调用

转载 作者:太空狗 更新时间:2023-10-29 17:28:52 25 4
gpt4 key购买 nike

如何获取继承类的 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) 构造函数中结束。

最佳答案

啊哈!我找到了解决办法。您可以使用泛型来做到这一点:

public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
this.ClassName = className;
}

public string ClassName{ get; set; }
}
public abstract class BaseClass<T> : VeryBaseClass
{
public BaseClass(MyObject myObject)
: base(typeof(T).Name, myObject)
{
}
}

public class InheritedClass : BaseClass<InheritedClass>
{
public InheritedClass(MyObject myObject)
: base(myObject)
{

}
}

关于c# - 将当前对象类型传递给基本构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com