0

我有一堂课

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

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

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

它会很高兴使用正常的统一调用来解决

container.Resolve("myBroker");

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

有任何想法吗?

4

2 回答 2

1

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

<unity>
<typeAliases>
  <typeAlias alias="IMyBrokeredObject" type="MyAssembly.IMyBrokeredObject, MyAssembly" />
</typeAliases>
<containers>
      <container>
        <types>
          <!-- Views -->
          <type type="IMyBrokeredObject" mapTo="MyAssembly.MyBrokeredObjectImplementation, MyAssembly" />
于 2008-12-29T17:55:01.800 回答
0

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

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

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

于 2009-01-02T15:43:02.020 回答