依赖项注入和InternalsVisibleTo属性

时间:2019-07-10 06:43:53

标签: c# dependency-injection architecture internalsvisibleto

在我的解决方案中,我在自己的模块中有一个IoC容器(Ninject)。可以很好地解决所有模块的公共类之间的依赖关系,但是如何解决内部类的依赖关系呢?

在BusinessRules项目中,我有一个名为Customer的公共类。保存新客户之前,必须调用许多验证方法,并且它们都在名为CustomerValidator的内部类中。这个验证器类是一个实现细节,应仅调用该验证器类以验证新客户,因此其他项目都不应看到它。

问题在于IoC容器看不到CustomerValidator(因为它是内部的),并且它无法解决这样的依赖关系:

public class Customer(ICustomerValidator customerValidator)
{
//...
}

IoC容器只能看到公共Customer类,但是对内部CustomerValidator类的存在一无所知。一种可能的解决方案是使用通常用于单元测试的InternalsVisibleTo属性,然后IoC可以查看我的内部类:

[assembly: InternalsVisibleTo("MySolution.IoC")]

这是可以接受的解决方案吗?在保持CustomerValidator内部的同时,还有其他方法吗?

0 个答案:

没有答案