我的项目分别有两个类库和一个Web客户端:A,B和客户端
当我调用Save()方法时显示错误。
new B().Save("Input");
注意:如何在此类库中使用Unity。
客户端调用库方法确认()和库A调用库B方法保存() 库B方法将数据保存在数据库。
现在我想在库B中使用Unity存储库容器,但是如何? This文章帮助我了解如何将存储库与控制台应用程序一起使用,但未能将其应用于我的情况。
答案 0 :(得分:0)
最佳做法是在应用程序的顶层注册依赖注入,例如mvc / webapi应用程序。类库中的任何显式解析都会破坏依赖注入链,从而隐藏依赖关系。如果您需要在类库中直接使用容器,则可能需要重新设计解决方案。
public class MyApiController : ApiController
{
public MyApiController(IService service)
{
//clearly MyApiController depends on IService
}
}
public class MyService : IService
{
public MyService(IUnityContainer container)
{
this.Dependency1 = container.Resolve<Dependency1>();
//using container directly breaks the dependency chain
//because I can resolve everything here
//makes MyService hard to be injected and unit tested
}
}