Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 具有继承类库的Unity存储库_C#_.net_Asp.net Mvc_Repository_Unity Container - Fatal编程技术网

C# 具有继承类库的Unity存储库

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应用程序。类库中的任何显式解析

我的项目有两个类库和一个web客户机,它们分别是:A、B和客户机

调用Save()方法时显示错误

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()如何调用继承的库方法。正如我在前面的问题和图片中所述。