Я сталкиваюсь с проблемой дизайна, которую просто не могу решить удовлетворительным образом.У меня есть сборка библиотеки классов, которая содержит все мои общие объекты ORM (используя платформу EntitySpaces).Эти объекты используются в двух или более различных приложениях, поэтому они находятся в своей собственной сборке.Для меня эта установка работала уже более 4 лет.
У меня также есть пара приложений, созданных на основе составного блока приложений (CAB) из группы Microsoft Patterns & Practices (P & P).Да, я знаю, что это действительно старая версия, но я работаю неполный рабочий день, работаю в режиме одного человека и не могу позволить себе обновиться до текущей версии.
Вот моя проблема:Я использовал свои навыки проектирования ОО, и всякий раз, когда я делаю существенный рефакторинг, я стараюсь перейти от процедурного подхода к более ОО подходу.Конечно, основным аспектом проектирования ОО является размещение операций близко к данным, с которыми они работают, это означает, что мои объекты ORM должны иметь функциональность, добавленную к ним, где это необходимо.Это доказывает, что я не могу понять, что я использую DI-контейнер Object Builder от P & P в CAB и что большая часть функциональности, которую я перенесу в свои объекты ORM, будет нуждаться в доступе к службам, предоставляемым моими приложениями.
Другими словами, допустим, у меня есть общий бизнес-объект под названием «Персона» (я знаю, что он оригинальный), и у меня есть два приложения, которые ПОЛНОСТЬЮ разнятся с человеком.Приложение A предоставляет набор служб, которые объект Person должен иметь DI, чтобы он мог использовать некоторые из методов, которые в настоящее время засорены на всех уровнях моих служб.Приложение B также имеет другой набор сервисов, которые ИТ-специалистам необходимо добавить в объект person.
Учитывая, как конструктор объектов P & P разрешает зависимости с помощью декорации атрибутов и отражения типов, я не понимаю, как я могу это сделатьвыполнить это.Короче говоря, у меня есть общий объект, который при использовании в различных приложениях мне нужно будет вводить зависимости, чтобы он мог выполнять определенные операции, специфичные для этого приложения.
Единственный подход, который я могу придумать, - это наследоватьновый тип в приложении A & B от объекта Person.Затем я бы добавил свои не-общие функциональные возможности и код DI в этот специализированный объект Person для конкретного приложения.Теперь, когда я пишу, что это кажется настолько очевидным, однако это все еще мое единственное решение, которое я могу придумать, и я хотел бы спросить здесь, чтобы узнать, есть ли у кого-то еще другое решение, которое он хотел бы предложить?
Одна проблемаЯ бы решил, что мое решение заключается в том, что я вижу, как меня увлекают, когда я называю свой унаследованный тип - я имею в виду ... это человек, так как бы вы еще назвали это?В любом случае, надеюсь, у вас будут какие-то идеи для меня.
Кроме того, я не в восторге от современных технологий, которые существуют, и, честно говоря, я едва понимаю те технологии, которые я использую в настоящее время.Так что, если я сказал что-то противоречивое или запутанное, я надеюсь, что вы сможете понять достаточно из остальной части поста, чтобы понять, о чем я спрашиваю.