我无法解决一个统一的类型。我有一个服用Uri和bool的服务。
Foo(Uri uri, bool bar)
当我尝试解决Foo Unity抱怨时
The type Uri has multiple constructors of length 2. Unable to disambiguate
我尝试过RegisterInstance,但无济于事。
我错过了什么?
答案 0 :(得分:4)
如果你的类有多个带有两个参数的构造函数,你必须指定Unity应该使用哪一个。
如果您的构造函数接受字符串,bool或URI等原始参数,则您必须使用这些参数注册映射,或者在解析时提供它们。
container.RegisterType<Foo>(new InjectionConstructor(new Uri("http://bla.com"), false));
或
Foo foo = container.Resolve<Foo>(new ParameterOverride("uri", new Uri("...")), new ParameterOverride("bar", false)));
应该有效。虽然我不推荐第二种方法。不应以这种方式使用DI容器。
答案 1 :(得分:2)
Unity初始化wcf客户端时出现相同的错误消息。因为我在我的配置中设置Unity,解决方案是
<register xxx>
<constructor></constructor>
</register>
明确地调用没有参数的构造函数。