2016-01-25 58 views
0

我的项目有两个类库和一个Web客户端,他们分别是:A,B和客户统一资源库和继承类库

enter image description here

当调用Save()方法告诉我的错误。

new B().Save("Input"); 

注意:如何在这个类库中使用Unity。

客户端调用库的方法确认()和库调用库B方法保存() 文库B的方法保存在数据库数据

现在我想在库B中使用Unity存储库容器,但是如何? This文章帮助我理解如何在控制台应用程序中使用存储库,但未能将其应用于我的情况。

回答

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 
    } 
} 
+0

Danny Chen,谢谢你的回复,因为缺乏我的知识请原谅我。我不明白你是如何做MyService构造函数的依赖的。当我的库A调用库B时,这个被调用的进程必须是新的B()。Save()。那么如何解决B的构造函数依赖。 – shamim

+0

@shamim如果你使用'new B()',你不会以依赖注入的方式进行操作。我建议你阅读一些指导性文章。您可以通过搜索引擎轻松获取它们。 –

+0

感谢您的回复,带出newB()如何调用继承库方法。正如我在前面提到的我的问题和图片。 – shamim