2013-07-20 94 views
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 
    } 
} 
+0

你想出了一个很好的方法来解决这个问题吗?我面临同样的问题,不知道如何继续。 – frostymarvelous

回答

0

有几个选项,我可以建议:

  1. 有可能注册在容器的类型,但你必须与反思玩,并使用非通用注册API。可能Ninject可以帮助你,但是我没有在文档中找到任何有意义的东西。
  2. 如果您可以修改库的来源,可以使用NinjectModule创建容器注册库,然后将InternalsVisibleToAttribute应用于原始库。
+0

可以在库中使用一个模块(windsor称这些安装程序)。 – dbones

0

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

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

你能不能有一个孩子容器在您的图书馆,公共,因此它可以用来从您的程序集里面注入对象? (在另一个程序集中拥有父级IoC容器)。

不知道是否所有的IoC都有这个功能(我只用了Unity直到现在)。