Обмен данными между классами - DI, IoC - PullRequest
0 голосов
/ 30 мая 2011

Моя настройка:

class ModelA { ... }
interface IModelARetriever {  IEnumerable<ModelA> GetObjects(); }

class ModelB { ... }
class DomainObject { List<ModelB> ModelBList; }

DomainObject.ModelBList может быть добавлена ​​с использованием манипулированных данных из списков ModelA объектов, но не обязательно.Где я должен поместить логику для этого?

Должен ли я создать метод в DomainObject, который принимает IEnumerable<ModelA>?Это означало бы изменение DomainObject для каждого возможного источника данных, который может создавать объекты ModelB.

Должен ли я создать отдельный interface ModelBFactory и расширить его?Это звучит лучше, но просто хочу мнение эксперта.

1 Ответ

0 голосов
/ 30 мая 2011

Если я правильно прочитал вопрос, ModelA объекты могут быть преобразованы в ModelB объекты. Я бы сказал, что требует ToModelB() метод на ModelA. Если преобразование является простым (скажем, просто копирование подмножества значений свойств ModelA), я бы реализовал его непосредственно в ToModelB(); если это более сложно (скажем, условное копирование некоторых значений свойств, комбинация значений, арифметика и т. д.), у меня был бы класс ModelAConverter, который выполнил эту работу.

Затем я бы добавил AddModelAObjects() метод, который вы упомянули, к DomainObject. Затем у вас есть два варианта преобразования ModelA s в ModelB s - либо вы вводите ModelAConverter в конструктор DomainObject и выполняете преобразование в AddModelAObjects(), либо в ModelA ' S конструктор и сделать преобразование в ToModelB(). Я бы, наверное, выбрал последнее, но это зависит от того, что еще должны делать объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...