Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 相互注入物体_C#_.net_Dependency Injection - Fatal编程技术网

C# 相互注入物体

C# 相互注入物体,c#,.net,dependency-injection,C#,.net,Dependency Injection,我使用的典型体系结构由业务层中的Manager对象组成。我在.NETCore/.NET标准中使用DI/IOC。管理器被注入服务层,因此服务被注入我们的API控制器。所以我现在在一个经理班工作。我现在需要一个驻留在另一个管理器类中的方法。 通常我通过服务层返回控制器,然后调用下一个服务,然后通过该服务调用管理器 我想知道是否可以将我需要的经理直接注入到我工作的经理中。因此,切断返回控制器的跳闸,然后通过其他服务返回给其他经理。基本上我有两个经理 public class TypeCodeManag

我使用的典型体系结构由业务层中的Manager对象组成。我在.NETCore/.NET标准中使用DI/IOC。管理器被注入服务层,因此服务被注入我们的API控制器。所以我现在在一个经理班工作。我现在需要一个驻留在另一个管理器类中的方法。 通常我通过服务层返回控制器,然后调用下一个服务,然后通过该服务调用管理器

我想知道是否可以将我需要的经理直接注入到我工作的经理中。因此,切断返回控制器的跳闸,然后通过其他服务返回给其他经理。基本上我有两个经理

public class TypeCodeManager : ITypeCodeManager
{
    public TypeCodeManager()
    {
    }

    public async Task<int> GetTypeCodeAsync(string typeCode, string code)
}

public class UserManager : IUserManager
{
     private readonly ITypeCodeManager _typeCodeManager;

     public UserManager(ITypeCodeManager typeCodeManager)
     {
        _typeCodeManager = typeCodeManager
     }
}
公共类TypeCodeManager:ITypeCodeManager
{
公共类型代码管理器()
{
}
公共异步任务GetTypeCodeAsync(字符串类型代码,字符串代码)
}
公共类用户管理器:IUserManager
{
私有只读ITypeCodeManager\u typeCodeManager;
公共用户管理器(ITypeCodeManager typeCodeManager)
{
_typeCodeManager=typeCodeManager
}
}

这通常是一个好主意吗?

我想说,通过“管理者”进入其他领域通常不是一个好主意,假设你的管理者是与持久性层对话的人。这将很快导致混淆依赖关系映射和代码


您的服务对于协调跨域关注点来说是一个更好的层,因为它们可能描述跨域工作流,并且依赖于多个管理者。

我想说,如果您的管理者与持久性层对话,那么通过“管理者”跨越到其他域通常不是一个好主意。这将很快导致混淆依赖关系映射和代码


您的服务对于协调跨域关注点来说是一个更好的层,因为它们可能描述跨域工作流,并且依赖于多个管理者。

从代码的角度来看,是的,这很好。从建筑的角度来看?现在,这是一个完全不同的问题,只有您和您的团队才能回答。
我想知道是否可以……
取决于您所说的
OK
。从代码的角度来看,是的,这很好。从建筑的角度来看?现在,这是一个完全不同的问题,只有您和您的团队才能回答。
我想知道是否可以……
取决于您所说的