我有一个基类,想要从这个基类创建一个新的实例。 所以我写了这个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; }
}
答案 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);
显然,您需要更改您的班级名称以匹配新设计。