我有一个带有参数化构造函数的类,该类带有一个IOptions<TOptions>
参数来访问连接字符串。现在,我需要为我的项目创建一个默认的构造函数。现在,我想从默认构造函数中触发参数化的构造函数。我该怎么办?
答案 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的上下文中使用)完全无法达到Configuration和Dependency injection的目的。