我正在编写基于PRISM的MVVM应用程序。 我在那些日子里学习PRISM,我有一个关于UnityContainer的技术问题。
使用container.Resolve
时,有没有办法注入特定实例?
我将尝试通过例子来解释。
让我们注册下一个类型:
var container = new UnityContainer();
container
.RegisterType(typeof(ISomeClass), typeof(SomeClass))
// with string
container
.RegisterType(typeof(IExample), typeof(Example), "SpecificExampleInstance")
// without string
container
.RegisterType(typeof(IExample), typeof(Example));
SomeClass
的构造函数获取IExample
作为输入参数。
现在我想要SomeClass
的解析实例,但告诉“容器”向SomeClass
构造函数注入IExample
的实例 - “SpecificExampleInstance”(在第3行注册的那个)上面的代码)而不是IExample
- 没有字符串(在上面代码的第4行注册的那个 - 没有字符串)
我很清楚我的问题很清楚,如果没有,请告诉我,我会尝试改变这个提法。
由于
答案 0 :(得分:0)
一种选择是使用Dependency属性:
public class SomeClass
{
public SomeClass([Dependency("SpecificExampleInstance")] IExample myExample)
{
// work with the service here
}
}