首页 > 解决方案 > Autofac - 解决服务中的具体实现

问题描述

我有一个类似这样的类层次结构

interface IDbHelper{
    //some functions
}

class dbHelper: IDbHelper{
    private readonly **AppContext**
    //call db functions
}

interface IService{
    private readonly idbHelper;
}

class Service: IService{
    private readonly IdbHelper
    //call db functions
}

Interface IApp{
    //do some functions

}

class App1: IApp{
    private readonly IService;
}


class App2: IApp{
    private readonly IService;
}

所以这是一个正在使用的类的简单结构我有一个 IApp 接口,它有 2 个实现,App1App2,这些类中的每一个都使用相同的Service实现,而服务又使用 DBHelper 的实现,它使用 AppContext .

应用程序上下文因所使用的应用程序而异。

每个类都使用 autofac 容器注册,例如

builder.RegisterType<App1>().As<IApp>();
builder.RegisterType<App2>().As<IApp>();
builder.RegisterType<Service>().As<IService>();
builder.RegisterType<DBHelper>().As<IDBHelper>();

应用程序、服务和帮助程序所需的每个类都是通过构造函数注入的。而且我希望在 AppContext 的情况下具有相同的功能,以便在解决特定应用程序的依赖关系时创建而不是单个应用程序。例如,当 App1 被解析时,我希望 App1 的上下文在 DBHelper 中使用,并且 App2 与 App2 一起使用的上下文被解析。

我将如何实现这一目标?

标签: c#asp.netasp.net-mvcdependency-injectionautofac

解决方案


推荐阅读