c# - 是否可以将配置绑定(bind)到 .NET Core 中的无状态/只读模型?

标签 c# .net asp.net-core

通常,我们会有一些模型

public class ConnectionStrings
{
    public string Sql { get; set; }
    public string NoSql { get; set; }
}

然后我们在 appsettings.json 中有如下内容:

"ConnectionStrings": {
    "Sql": "some connection string",
    "NoSql": "some other connection string"
}

然后我绑定(bind)模型如下:

services.Configure<ConnectionStrings>(
            options => Configuration.GetSection("ConnectionStrings").Bind(options));

一切都很完美,但我的模型可变没有意义,因为它包含重要信息。毕竟,配置是静态信息,所以一旦我的模型被读取,它应该保持原样。

还有其他更安全的方法吗?

最佳答案

作为替代方案,对于 version 2.1+ ,您现在可以通过指定使用 BinderOptions 来绑定(bind)到非公共(public)属性:

services.Configure<ConnectionStrings>(options => 
        Configuration.GetSection("ConnectionStrings")
                .Bind(options, c => c.BindNonPublicProperties = true));

或者只是获取它们:

var connectionStrings = Configuration.GetSection("ConnectionStrings")
        .Get<ConnectionStrings>(c => c.BindNonPublicProperties = true);

关于c# - 是否可以将配置绑定(bind)到 .NET Core 中的无状态/只读模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45378143/

相关文章:

c# - 避免操作 List 的元素

c# - 显示内部服务器错误?

.net - 开始VSTO开发

c# - 替代 .NET 的 Uri 实现?

.net - 为什么在这种情况下我不需要将 int 转换为 string? (。网)

elasticsearch - Serilog未登录到Elasticsearch

c# - 带有警告和 InvalidOperationException 的 WCF WebService

c# - signalR + IIS 404 协商 angular4 客户端(1.0.0-preview1-final)

c# - 重新创建一个程序来运行 ssis 包。获取 LoadPackage 错误

c# - 如何向网络服务发送特殊字符?