gpt4 book ai didi

c# - 构造函数注入(inject)应用程序架构是错误的 - Ninject

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:12 24 4
gpt4 key购买 nike

我正在使用 Ninject,并使用构造函数注入(inject):

我的问题的一个例子是

我有两个接口(interface)及其实现。

1. IUsersProvider
2. ICompaniesProvider

我需要在 CompaniesProvider 中使用 UsersProvider 中的函数从 CompaniesProviderUsersProvider

所以我在两个类中都创建了构造函数:

    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 抛出异常:

处理在另一个类中使用每个类的函数的场景的最佳方式是什么?

最佳答案

处理这种情况的正确方法是重构一个或两个接口(interface)/类,使它们不相互依赖。如果不查看每个类的代码就很难给出更多细节建议,但通常情况下,如果您发现自己处于这种情况,那么您的一个或两个类做的太多了,即违反了单一职责原则。拆分界面,使其只做一件事,然后您的依赖关系应该会清除。

关于c# - 构造函数注入(inject)应用程序架构是错误的 - Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com