我发现我的构造函数开始看起来像这样:
public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )
Run Code Online (Sandbox Code Playgroud)
随着参数列表不断增加.由于"容器"是我的依赖注入容器,为什么我不能这样做:
public MyClass(Container con)
Run Code Online (Sandbox Code Playgroud)
每个班级?有什么缺点?如果我这样做,感觉我正在使用一个美化的静电.请分享您对IoC和依赖注入疯狂的看法.
c# java dependency-injection ioc-container inversion-of-control
我在员工和团队之间有多对多的关联.Foreach实体我有一个存储库.
现在我使用ASP.NET MVC并创建了一个EmployeeController.我还创建了一个View来编辑一个Employee.对于这个视图,我需要一个包含所有团队的DropDownList.问题是我的EmployeeController只有EmployeeRepository.那么我怎样才能得到所有团队?我现在的解决方案是使用两个存储库.
但这是一个很好的解决方案吗?
我可以改为创建TeamController并编写一个返回所有团队的方法(我该怎么做)?
看看我的Controller(我正在使用依赖注入来管理依赖项):
public RoleController(IRoleRepository roleRepository, ISiteRepository siteRepository, IUserRepository userRepository, IDbContext dbContext)
{
_roleRepository = roleRepository;
_siteRepository = siteRepository;
_userRepository = userRepository;
_dbContext = dbContext;
}
Run Code Online (Sandbox Code Playgroud)
拥有许多依赖项的类是代码味道?对?
但是,在我的示例中,我需要关联Users并Sites在a中Role,然后我需要这些依赖关系来执行此关联.
在邮件列表上的一些人我被告知有太多的依赖关系表明某些事情可能是错误的.但我没有别的办法.我分开了我的责任,在那种情况下有一些我不知道如何对待?有什么不对吗?
更新:
我需要Repositories和DbContext,因为DbContext是我的UnitOfWork,存储库不保存.
此示例是一个简单的CRUD,其中包含一些其他功能,例如视图中的关联和GRID.
更新2:
我正在使用我的UI层是MVC的架构.
.net c# asp.net-mvc domain-driven-design dependency-injection