3
我登记类型等这样的构造:统一选择具有参数
IUnityContainer container = new UnityContainer()
.RegisterType<IActiveDirectoryUser, ADUser>();
类ADUser便有包含2个构造函数,一个无参数,和一用一单个参数。当解析器解决它时,它会选择带参数的那个。我如何告诉它使用无参数控制器?
我登记类型等这样的构造:统一选择具有参数
IUnityContainer container = new UnityContainer()
.RegisterType<IActiveDirectoryUser, ADUser>();
类ADUser便有包含2个构造函数,一个无参数,和一用一单个参数。当解析器解决它时,它会选择带参数的那个。我如何告诉它使用无参数控制器?
在注册类型中,使用InjectionConstructor
指示统一,它应该使用的无参数的构造函数:
IUnityContainer container = new UnityContainer();
container.RegisterType<IActiveDirectoryUser, ADUser>(new InjectionConstructor());
既然你是路过没有类型InjectionConstructor
构造,团结就会知道使用参数的构造函数实例ADUser
类时。
用[InjectionConstructor]
注释需要的构造函数。
还有别的办法吗?违反关注点的分离,该班级不应该意识到Unity。 – Matthew 2012-08-08 18:56:47
只能通过属性,或者您可以创建具体实例并注册它。例如IUnityContainer container = new UnityContainer(); container.RegisterInstance(new ADUser(5)); –
GSerjo
2012-08-08 19:00:30
很高兴知道这个选项,谢谢。 – Lyall 2013-12-26 23:19:15