Расширение Unity - PullRequest
       9

Расширение Unity

3 голосов
/ 03 ноября 2011

Я унаследовал некоторый код с пользовательским DI-контейнером (который нужно переместить в единицы), который основан на атрибутах, как MEF например,

[SERVICE]
PUBLIC <interface> myVar { get; set ; }

интересно, есть ли уже расширение для единства, которое я мог бы использовать, или, может быть, какая-нибудь помощь в его создании?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Непонятно, какое поведение [SERVICE] предполагается включить. Поэтому я угадаю:

Из коробки Unity поддерживает Атрибуты внедрения для различных форм внедрения зависимостей. Вы также можете сделать Политики на основе атрибутов для перехвата метода.

Если у вас есть возможность изменить способ внедрения: предпочтительным шаблоном является использование внедрения конструктора вместо атрибутов или локатора службы. Это позволяет вам удалить все ссылки на Unity из ваших классов ... что означает, что вы можете снова менять контейнеры без изменений кода. См. Сервисный локатор - это анти-шаблон .

1 голос
/ 04 ноября 2011

Если это SERVICEAttribute помечает свойство для внедрения контейнером, чем просто выполнить поиск по всей базе кода и заменить [SERVICE] на [Dependency].

DependencyAttribute - это способ Unity маркировать свойства для внедрения зависимостей.

Я согласен с ErnieL, однако, что использование атрибутов является запахом кода в стране внедрения зависимостей. Используйте атрибут, чтобы разрешить перемещение кода в Unity, но не используйте [Dependency] для любого нового кода, который вы пишете, и удаляйте его при рефакторинге старого кода.

...