如何在没有对象初始化程序的情况下创建实例并添加基类数据

时间:2014-05-18 13:56:57

标签: c# oop inheritance

我有一个基类,想要从这个基类创建一个新的实例。 所以我写了这个Create方法,但我怎样才能得到基类的数据。

我不想使用对象初始化器。

这不起作用(为空):

var result = ccuObjectBase as CcuChannelObject;

代码

internal class CcuChannelObject : CcuObjectBase, ICcuObject
{
    public static CcuChannelObject Create(CcuObjectBase ccuObjectBase)
    {
        var result = new CcuChannelObject();

        result.Datapoints = ccuObjectBase.JsonObject.GetDatapoints();

        return result;
    }

    public List<Datapoint> Datapoints { get; set; }
}

1 个答案:

答案 0 :(得分:0)

如果你想重用CcuObjectBase的实例,那么你应该使用关联而不是继承。所以你的课程看起来像这样:

internal class CcuChannelObject : ICcuObject
{
    private CcuObjectBase _ccuObjectBase;

    public CcuChannelObject(CcuObjectBase ccuObjectBase)
    {
        _ccuObjectBase = ccuObjectBase;
        Datapoints = ccuObjectBase.JsonObject.GetDatapoints();
    }

    public List<Datapoint> Datapoints { get; set; }
}

调用代码类似于:

var ccuObjectBase = new CcuObjectBase();
/*
...
processing to work out what object you want
...
*/
var ccuChannelObject = new CcuChannelObject(ccuObjectBase);

显然,您需要更改您的班级名称以匹配新设计。