Как создать экземпляр и добавить данные базового класса без инициализатора объекта

1

У меня есть базовый класс и вы хотите создать новый экземпляр, который наследуется от этого базового класса. Поэтому я написал этот Create Method, но как я могу получить данные базового класса.

Я не хочу использовать инициализатор объекта.

Это не работает (равно null):

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; }
}
Теги:
oop
inheritance

1 ответ

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);

Очевидно, вам нужно будет изменить имена классов в соответствии с новым дизайном.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню