Unity IOC配置

时间:2008-12-16 11:08:56

标签: configuration unity-container

我有一个班级

public class Broker
{
    public Broker(string[] hosts, string endPoint, string port, Type remoteType)
    {
    }
}

我想使用Unity XML Configuration配置,我可以使用C#中的代码配置它,如下所示,其中“container”是我的Unity容器

            container.Configure<InjectedMembers>()
                .ConfigureInjectionFor<Broker>("myBroker",
                                                           new InjectionConstructor(hosts, endPoint, port, new InjectionParameter(typeof(IMyBrokeredObject))));

它将很乐意使用正常的统一调用解决

container.Resolve( “MYBROKER”);

但是目前我的xml无法解析最终参数IMyBrokeredObject,我得到了一个解决方案异常,因为Unity试图解决只是注入类型的类型,就像在上面的代码中那样。

任何想法?

2 个答案:

答案 0 :(得分:1)

您是否在配置文件中定义了类型:

<unity>
<typeAliases>
  <typeAlias alias="IMyBrokeredObject" type="MyAssembly.IMyBrokeredObject, MyAssembly" />
</typeAliases>
<containers>
      <container>
        <types>
          <!-- Views -->
          <type type="IMyBrokeredObject" mapTo="MyAssembly.MyBrokeredObjectImplementation, MyAssembly" />

答案 1 :(得分:0)

但我的问题是没有可用于IMyBrokeredObject的实现,在后台实际发生的是代理提供了给定接口的远程对象,实际的实现在其他地方。

在代码中,我可以通过提供“InjectionParameter”来获取容器以提供代理,我无法在xml配置中找到如何执行此操作。

它很棘手,因为我不希望容器给出接口的实例但实际上按原样传递接口,“InjectionParameter”是一个值的存储,当存储的对象创建时,存储的值被传递容器,按原样。我正在寻找的是创建InjectionParameter所需的配置xml并为其提供值(如果可能的话)?