1

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

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

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

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

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

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

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

4

0 回答 0