C# Передача параметра подмодулям

311
17 февраля 2017, 00:57

Всем доброго дня).

Ситуация: Двигатель (Engine) имеет свойство модель (Model).

Есть иерархия: Двигатель (Engine) -> Все Параметры (AllParams) -> Параметры (Param1, Param2, Param3 и т. д.).

Каждый Param представляет собой объект заданного класса (Param1, Param2, Param3 и т.д.). В каждом Param есть свойство Model, которое описывает объект класса Engine, в котором эти параметры и находятся.

В крайне упрощенном виде код данной ситуации представлен внизу:

public class Engine {
    public EngineModel Model {get; private set;}
    public AllParams allParams;
    public Engine(EngineModel Model) {
        this.Model = Model;
        allParams = new AllParams();
}
public void UpdateModel(EngineModel newModel) {
        Model = newModel;
    }
}
public class EngineModel {
    public string ModelName {get; set;}
}
public class AllParams {
    public Param1 param1;
    public Param2 param2;
    public Param3 param3;
    public AllParams() {
        param1 = new Param1();
        param2 = new Param2();
        param3 = new Param3();      
    }   
}
public class Param1 {
    public string ModelName {get; set;}
}
public class Param2 {
    public string ModelName {get; set;}
}
public class Param3 {
    public string ModelName {get; set;}
}

С точки зрения архитектурного проектирования, как лучше организовать изменение Model в каждом Param при изменении модели двигателя?

У меня есть две идеи:

1) В классе AllParams организовать метод UpdateModel, который изменит значение Model в каждом из Param, входящих в AllParams.

2) В классе AllParams определить класс ModelObservable для хранения Model и вызова события ModelChanged. В свою очередь, каждый Param подписывается на событие ModelChanged и получает измененное значение Model

Или 1 и 2 вариант полная чушь и надо сделать совсем по-другому?

READ ALSO
Обработка событий в WinForm C#

Обработка событий в WinForm C#

Есть следующая проблема, на форме расположен компонент, форма создана без элементов управления и обработка перемещения формы по рабочему...

551
Есть ли способ делать не такие громозкие события?

Есть ли способ делать не такие громозкие события?

Реализация в модели (в паттерне MVVM), каждой публичной переменной так:

476
Разница get; set;

Разница get; set;

Не совсем понял разницу между

325