0
我有这需要一个泛型类型通过XML配置与命名注册的依赖时,统一解决问题
interface IIFace<T>
然后,我有几个实现
public class IFaceImp1 : IIFace<MyObj> {}
public class IFaceImp2 : IIFace<MyObj> {}
我定义它被注入到一个视图模型的接口它是此接口的一个特定类型的对象...
public MainViewModel(IIFace<MyObj> scrapper) { }
,然后我配置统一来填充它
<containers>
<container>
<register type="IIFace[MyObj]" mapTo="IFaceImp1">
<constructor>
<param name="loc" value="i am just a mock">
</param>
</constructor>
</register>
</container>
</containers>
这工作得很好 的问题是,现在我想创建一个名为注册,这样以后我可以通过名称加以解决。所以我把它命名,并首先创建另一个,但不起作用。我减少了问题的:
<containers>
<container>
<register type="IIFace[MyObj]" mapTo="IFaceImp1" name="FirstImplementation">
<constructor>
<param name="loc" value="i am just a mock">
</param>
</constructor>
</register>
</container>
</containers>
这也不起作用...... WH恩试图解决<>(“FirstImplementation”)。但是,如果我删除名称属性并使用Resolve <>()重载,它可以正常工作.. 任何有关可能发生的事情的想法,有名称这不起作用?
我认为问题是当没有名字时,当试图实例化MainViewModel时,Unity会调用容器中的默认注册类型。但是,如果有名称,则无法在注册呼叫中设置该名称。我认为(也许我错了)我需要告诉团结莫名其妙有一个命名的依赖内,但我不知道如何做到这一点 – 2010-12-14 14:04:43