gpt4 book ai didi

c# - 将其传递给基础构造函数

转载 作者:行者123 更新时间:2023-11-30 16:57:56 24 4
gpt4 key购买 nike

我正在尝试为我正在编写的程序实现良好的设计模式。我有一个这样的类结构。

abstract class SomeBase
{
public SomeObject obj { get; protected set; }

protected SomeBase(SomeObject x)
{
obj = x;
}

//Other methods and fields...
}

public class SomeDerived : SomeBase
{

public SomeDerived() : base(new SomeObject(this))
{

}

}

现在我确定您知道,您不能将 this 传递到基类构造函数中,因为此时该对象尚未初始化。无论如何,我真的希望有一个解决方法。允许 SomeDerived() 处理基类字段的设置对我来说不是最佳实践。我想将这个新对象向上传递。

最佳答案

这是不可能的,在构造函数之后使用一个Init方法:

 abstract class SomeBase
{
private SomeObject _obj { get; set; }
public SomeObject obj
{
get
{ // check _obj is inited:
if (_obj == null) throw new <exception of your choice> ;
return _obj;
}
}

protected SomeBase()
{
obj = null;
}

protected void Init()
{
obj = x;
}

//Other methods and fields...
}

public class SomeDerived : SomeBase
{

public SomeDerived() : base()
{
Init(new SomeObject(this));
}

}

关于c# - 将其传递给基础构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25919007/

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