C# Unity使用参数选择构造函数

C# Unity使用参数选择构造函数,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我注册的类型如下: IUnityContainer container = new UnityContainer() .RegisterType<IActiveDirectoryUser, ADUser>(); IUnityContainer container=newunitycontainer() .RegisterType(); ADUser类包含2个构造函数,一个无参数,一个带单个参数。当解析器去解析它时,它会选择一个带有参数的。如何告诉它

我注册的类型如下:

IUnityContainer container = new UnityContainer()
                .RegisterType<IActiveDirectoryUser, ADUser>();
IUnityContainer container=newunitycontainer()
.RegisterType();

ADUser类包含2个构造函数,一个无参数,一个带单个参数。当解析器去解析它时,它会选择一个带有参数的。如何告诉它使用无参数构造函数?

[InjectionConstructor]
注释所需构造函数注册类型时,使用
InjectionConstructor
指示Unity应使用无参数构造函数:

IUnityContainer container = new UnityContainer();
container.RegisterType<IActiveDirectoryUser, ADUser>(new InjectionConstructor());
IUnityContainer container=newunitycontainer();
RegisterType(新的InjectionConstructor());

由于您没有向
InjectionConstructor
构造函数传递任何类型,Unity在实例化
ADUser
类时将知道使用无参数构造函数。

还有其他方法吗?违反了关注点分离,该类不应该知道Unity.only通过属性,或者您可以创建具体实例并注册它。例如,IUnityContainer container=newunitycontainer();容器注册状态(新ADUser(5));