首页 文章

Dotnet核心默认构造函数调用参数化IOption <> [暂停]

提问于
浏览
-1

我有一个带有参数化构造函数的类,带有 IOptions<TOptions> 参数来访问连接字符串 . 现在我需要为我的项目目的创建一个默认构造函数 . 现在我想从默认构造函数中触发参数化构造函数 . 我怎样才能做到这一点?

1 回答

  • 2

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

    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的目的 .

相关问题