使用IOption <>参数化的Dotnet核心默认构造函数调用

时间:2018-12-10 09:37:41

标签: c# asp.net-core .net-core asp.net-core-mvc

我有一个带有参数化构造函数的类,该类带有一个IOptions<TOptions>参数来访问连接字符串。现在,我需要为我的项目创建一个默认的构造函数。现在,我想从默认构造函数中触发参数化的构造函数。我该怎么办?

1 个答案:

答案 0 :(得分:2)

从默认的构造函数中,可以使用OptionsWrapper类的实例(通过实现IOptions接口)调用参数化的构造函数(通过使用this关键字):

public class ValuesController
{
    public ValuesController()
        : this(new OptionsWrapper<Config>(new Config() { ConnectionString = "default ConnectionString" }))
    {
    }

    public ValuesController(IOptions<Config> configSettings)
    {
    }
}

public class Config
{
    public string ConnectionString { get; set; }
}

或者,您可以使用Options.Create,它实际上是相同的:Options

Options.Create(new Config() { ConnectionString = "default ConnectionString" });

但是,这两种解决方案(尤其是在ASP.NET Core的上下文中使用)完全无法达到ConfigurationDependency injection的目的。