Разрешение интерфейса контейнера IoC (Prism Unity) и ограничение интерфейса C # - PullRequest
0 голосов
/ 26 октября 2011

У меня возник вопрос / путаница в связи с целями IoC.Рассмотрим следующее:

ISite - интерфейс

ImapSite : ISite - конструктор не по умолчанию.

Я регистрирую интерфейс с конкретным импом, используя контейнер следующим образом:

 _container.RegisterType<ISite, ImapSite>(new InjectionConstructor(typeof(string), typeof(Account)));

И разрешаю его, используя:

_site = _container.Resolve<ISite>(new DependencyOverride[]
                                              {
                                                  new DependencyOverride<string>(host), 
                                                  new DependencyOverride<Account>(Account.FromAppConfig())
                                              });

Теперь мне интересно, если этопревосходит цель IoC, потому что, если я не могу ограничить, какой конструктор будет иметь реализация ISite, когда ImapSite изменит сигнатуру ctor, мне все равно придется менять ее везде в коде.

1 Ответ

2 голосов
/ 26 октября 2011

Да, если вы передаете аргументы конструктора напрямую, что противоречит цели IoC.Вы должны переосмыслить дизайн ваших классов так, чтобы вводились только сервисы .Может быть, аргументы, которые вы передаете, должны быть аргументами отдельных методов класса?

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