2013-07-15 5 views
0

Я пишу редактор документов. Приложение написано в WPF и должно иметь возможность обрабатывать несколько документов в рамках одного процесса. Каждый документ имеет собственное окно редактора с собственной лентой (вроде того, как это делает Word).Может ли DI-контейнер помочь в этой ситуации

Я хотел бы использовать шаблоны DI в приложении, поэтому f.ex. классу «SaveManager» может быть введен документ, который он должен сохранить. Очевидно, что контейнер не может создать весь граф объекта при запуске приложения, потому что пользователь может позже открыть или создать новый документ. «Обычным» способом справиться с этим является использование абстрактной фабрики, но это означает, что мне нужна фабрика для каждого класса, который работает с документом. Я ожидаю, что многим классам понадобится ссылка на документ, и я не хочу прыгать через обручи только ради DI. Есть ли способ разрешить контейнеру управлять временем жизни документов, выдавая правильный экземпляр документа в нужное время.

С наилучшими пожеланиями,
Терье

ответ

0

Что я заканчивал поступаю, чтобы создать дочерний контейнер для каждого документа. Таким образом, я изолировал решение каждого окна документа с его собственным контейнером.

/terje

0

Я хотел бы предложить вам идти, как это:

  1. Сделать базовый класс, который является somesort из начальной загрузки и строителя для окружающей среды
  2. Положите все, что одно и то же по всем документам, за исключением особенностей
  3. Создание конкретных классов, которые реализуют специфику конкретных документов
  4. Использование DI на базовый класс для общих ссылок, который будет введен в строй до
  5. Используйте интерфейсы для конкретных ссылок на конкретные классы, такие как:

    недействительных MyClass (IResource ресурсов);

  6. Наследовать от этого ресурса на других классах, а затем решить ее с помощью дженерик или типажей на конкретных классах

+0

Спасибо за ваш ввод. Я не уверен, что полностью понимаю ваше предложение, но это заставило меня думать в другом направлении, чем я изначально сделал, и я ценю это. – Terje

Смежные вопросы