Unity与接口扩展另一个接口

时间:2014-01-24 16:47:30

标签: c# dependency-injection inversion-of-control unity-container ioc-container

我有一个班级:

public class Foo : IFoo
{
}

和两个接口:

Public interface IFoo : IBar<SomeType>
{
}

public interface IBar<T>
{
    DoSomething(T t);
}

我们正在使用XML Config,代码配置工作正常,但web.config没有。

错误如下:

  

依赖关系的解决方法失败,输入=&#34; IFoo&#34;,name =&#34;(none)&#34;。
  在解决时发生例外情况。
  异常是:InvalidOperationException - 当前类型IBar`1 [SomeType]是一个接口,无法构造。你错过了类型映射吗?

mlns="http://schemas.microsoft.com/practices/2010/unity">
    <alias alias="IFoo"
        type="IFoo, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e4bf38905880b60b" />

    <alias alias="Foo"
        type="Foo, Something, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e4bf38905880b60b" />

    <container name="SomeName">
        <register type="IFoo" mapTo="Foo" />
    </container>
</unity>

1 个答案:

答案 0 :(得分:1)

我相信您可能正在使用UnityContainer的默认实例,因为您没有提及有关使用容器的命名实例的任何内容。

<container name="SomeName">
    <register type="IFoo" mapTo="Foo" />
</container>

您正在将映射注册到“SomeName”而不是默认容器。

删除

name="SomeName"