IoC Container(Prism Unity)接口解析和c#接口限制

时间:2011-10-25 22:07:44

标签: c# interface inversion-of-control prism ioc-container

我有一个与IoC目的相关的问题/混淆。请考虑以下事项:

ISite - 界面

ImapSite :ISite - 非默认构造函数。

我使用容器注册具有imp的接口,如下所示:

 _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 个答案:

答案 0 :(得分:2)

是的,如果你直接传递构造函数参数,那就违背了IoC的目的。您应该重新考虑类的设计,以便只注入服务。也许您传入的参数实际上应该是类中各个方法的参数?