我正在使用Ninject,并使用构造函数注入:
我的问题的一个例子是
我的实现有两个接口。
1. IUsersProvider
2. ICompaniesProvider
我需要使用UsersProvider
CompaniesProvider
中的函数
来自CompaniesProvider
UsersProvider
所以我在两个类中都创建了构造函数:
public class UsersProvider : IUsersProvider
{
private readonly ICompaniesProvider _companiesProvider;
public UsersProvider(ICompaniesProvider companiesProvider)
{
_companiesProvider = companiesProvider;
}
}
和
public class CompaniesProvider : ICompaniesProvider
{
private readonly IUsersProvider _usersProvider;
public UsersProvider(IUsersProvider usersProvider)
{
_usersProvider = usersProvider;
}
}
现在这段代码编译好了但是从架构的角度看这不正确(它看起来像一个循环引用)。运行此代码时,Ninject会抛出异常:
处理场景以使用另一个类中每个类的函数的最佳方法是什么?
答案 0 :(得分:4)
处理这种情况的正确方法是重构一个或两个接口/类,以便它们不相互依赖。如果你发现自己处于这种情况,通常如果你发现自己处于这种情况,你的一个或两个课程做得太多,即违反单一责任原则,那么很难在没有看到每个细节的情况下提供更详细的建议。拆分界面所以它只做一件事,然后你的依赖关系应该清理。