使用选项模式进行依赖注入

时间:2017-09-25 19:42:47

标签: c# asp.net dependency-injection

我正在构建一个在选项模式设计之后使用依赖注入的应用程序。我有一个名为DataManager的自定义ORM类。当我创建DataManager的实例时,我将连接字符串注入到类中,如下所示。

  public class DataManager : CommonDataManager {

    private readonly ConnectionStrings _connectionStrings;


    public DataManager(IOptions<ConnectionStrings> options) {

        this._connectionStrings = options.Value;


    }

创建DataManager对象时,我应该使用哪个参数?初始化代码应该是什么样的?

DataManager dm = new DataManager(?);

1 个答案:

答案 0 :(得分:0)

DI集成意味着DI引擎将负责创建对象。因此,不应直接初始化您的类,而应该执行以下操作。使用DI注册您的DataManager,以便稍后可以从serviceCollection实例化它:

在您的ConfigureServices方法中添加以下内容:

services.AddTransient<DataManager>();

请注意,您应该决定实例的生命周期(我在这里选择了Transient,但这取决于您 - SingletoneScoped,...)。

然后当您需要实例化它时,请按以下方式调用:

serviceProvider.GetRequiredService<DataManager>();

但是,如果您想采用自己的方法并希望自己实例化DataManager,则应从IoC容器中获取参数,如下所示:

DataManager dm = new DataManager(sp.GetRequiredService<IOptions<ConnectionStrings>>());

注意:在这两种情况下,我都假设您已经在Startup.ConfigureServices方法中使用DI注册了选项。