我有一个带有参数化构造函数的类,带有 IOptions<TOptions> 参数来访问连接字符串 . 现在我需要为我的项目目的创建一个默认构造函数 . 现在我想从默认构造函数中触发参数化构造函数 . 我怎样才能做到这一点?
IOptions<TOptions>
在默认构造函数中,您可以使用OptionsWrapper类的实例调用参数化构造函数(通过使用 this 关键字),该实例实现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的目的 .
1 回答
在默认构造函数中,您可以使用OptionsWrapper类的实例调用参数化构造函数(通过使用
this
关键字),该实例实现IOptions接口:或者,您可以使用Options.Create,它实际上也是如此:Options
但是,这些解决方案中的任何一个 - 特别是如果在ASP.NET Core的上下文中使用 - 完全违背了Configuration和Dependency injection的目的 .