类库中的依赖注入如何?

时间:2013-07-20 04:11:57

标签: c# .net dependency-injection ninject

我有类库项目,大多数类都是内部的,无法从外部访问。我想从这个库中注入那些类依赖项。我不知道我该怎么做?

示例代码:

internal interface IClass1
{

}

internal class Class1 : IClass1
{

}

internal class Class2
{
    private readonly IClass1 _class1;
    // I want to inject this interface from inside this project.
    //Not from outside this project.
    // Because this class may not accessible from other class. 
    internal Class2(IClass1 class1) 
    {
        _class1 = class1;   
    }

    internal Class2() :this(new Class1())
    {
        // I do it this way.
        // But i want to do it using any IOC container 
    }
}

2 个答案:

答案 0 :(得分:0)

我可以提供的建议很少:

  1. 可以在容器中注册这些类型,但您必须使用反射,并使用非通用注册API。可能是Ninject可以提供帮助,但我没有在文档中找到任何有意义的内容。
  2. 如果您可以修改库的源代码,则可以使用NinjectModule创建容器注册库,然后将InternalsVisibleToAttribute应用于原始库。

答案 1 :(得分:0)

我对此没有多少经验,因为我是使用IoC(DI)的新手。但是我在企业库(统一)中看到了一个具有子容器,容器层次结构的功能。

http://msdn.microsoft.com/en-us/library/ff660895(v=pandp.20).aspx#container_differentmappings

您的库中是否可以使用子容器作为公共容器,因此它可以用于从程序集内部注入对象? (在另一个程序集中具有父IoC容器)。

不确定所有IoC是否都具有此功能(我现在只使用Unity)。