Как стать автором
Обновить
11
0
Рылов Андрей @ankstoo

Пользователь

Отправить сообщение

Расширение возможностей Unity

Время на прочтение7 мин
Количество просмотров8.9K
В этом посте я покажу пример того, как можно расширить стандартные возможности IoC-контейнера Unity. Покажу как создается объект в Unity «изнутри». Расскажу про Unity Extensions, Strategies & Policies.

Допустим в нашем приложении есть компонент Persistence, который отвечает за сохранении объектов. Он описывается интерфейсом IPersistence и имеет реализации — FilePersistence, DbPersistence, WsPersistence, InMemoryPersistence.

В классическом варианте мы в начале приложения регистрируем нужную реализацию в Unity и далее, вызывая Resolve для IPersistence, всегда получаем ее.
IUnityContainer uc = new UnityContainer();

uc.RegisterType<IPersistence, FilePersistence>();
IPersistence p = uc.Resolve<IPersistence>();
p.Add(obj);


* This source code was highlighted with Source Code Highlighter.


Но что делать, если необходимая реализация может меняться в процессе работы приложения. Например она задается в конфиг-файле, или при недоступности сети надо автоматически использовать FilePersistence?
Читать дальше →
Всего голосов 55: ↑33 и ↓22+11
Комментарии11

Информация

В рейтинге
Не участвует
Откуда
Ижевск, Удмуртия, Россия
Зарегистрирован
Активность