1

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

示例代码:

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 
    }
}
4

2 回答 2

0

我可以建议的选择很少:

  1. 可以在容器中注册这些类型,但您必须使用反射,并使用非通用注册 API。可能是 Ninject 可以在路上提供帮助,但我在文档中没有发现任何有意义的东西。
  2. 如果可以修改库的来源,可以使用 NinjectModule 创建容器注册库,然后将InternalsVisibleToAttribute应用到原始库。
于 2013-07-20T18:20:46.020 回答
0

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

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

你的库中不能有一个子容器,作为公共的,所以它可以用来从你的程序集中注入对象吗?(在另一个程序集中有父 IoC 容器)。

不确定是否所有 IoC 都具有此功能(到目前为止我只使用过 Unity)。

于 2013-07-20T18:35:56.057 回答