C# 具有继承类库的Unity存储库
我的项目有两个类库和一个web客户机,它们分别是:A、B和客户机 调用Save()方法时显示错误C# 具有继承类库的Unity存储库,c#,.net,asp.net-mvc,repository,unity-container,C#,.net,Asp.net Mvc,Repository,Unity Container,我的项目有两个类库和一个web客户机,它们分别是:A、B和客户机 调用Save()方法时显示错误 new B().Save("Input"); 注意:如何在此类库中使用Unity 客户端调用库A方法确认()和库A调用库B方法保存() 库B方法将数据保存在数据库中 现在我想在库B中使用Unity存储库容器,但是如何使用呢?文章帮助我了解如何将存储库与控制台应用程序一起使用,但在我的情况下未能应用此方法。最佳做法是在应用程序的顶层注册依赖注入,如mvc/webapi应用程序。类库中的任何显式解析
new B().Save("Input");
注意:如何在此类库中使用Unity
客户端调用库A方法确认()和库A调用库B方法保存()
库B方法将数据保存在数据库中
现在我想在库B中使用Unity存储库容器,但是如何使用呢?文章帮助我了解如何将存储库与控制台应用程序一起使用,但在我的情况下未能应用此方法。最佳做法是在应用程序的顶层注册依赖注入,如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
}
}
公共类MyApicController:ApicController
{
公共MyApicController(iSeries服务)
{
//显然,MyApicController依赖于iSeries
}
}
公共类MyService:IService
{
公共MyService(IUnityContainer容器)
{
this.Dependency1=container.Resolve();
//使用容器直接打破依赖链
//因为我能解决这里的一切
//使MyService难以注入和单元测试
}
}
Danny Chen,谢谢你的回复,由于我缺乏知识,请原谅。我不明白你是如何为我服务的。当我的库A调用库B时,这个被调用的进程必须为我提供新的B().Save()。那么如何解析B的构造函数依赖关系。@shamim如果使用new B()
,则不是以依赖关系注入的方式进行操作。我建议你读一些指导性文章。您可以通过搜索引擎轻松地获取它们。感谢您的回复,不必考虑newB()如何调用继承的库方法。正如我在前面的问题和图片中所述。