Unity选择带参数的构造函数

Mat*_*hew 3 c# dependency-injection unity-container

我正在注册这样的类型:

IUnityContainer container = new UnityContainer()
                .RegisterType<IActiveDirectoryUser, ADUser>();
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*sev 10

注册类型时,用于InjectionConstructor指示Unity应该使用无参数构造函数:

IUnityContainer container = new UnityContainer();
container.RegisterType<IActiveDirectoryUser, ADUser>(new InjectionConstructor());
Run Code Online (Sandbox Code Playgroud)

由于您没有将任何类型传递给InjectionConstructor构造函数,因此Unity将在实例化ADUser类时使用无参数构造函数.