在我们的AspNetCore 2.2
应用中,我们在配置节中使用了强类型的类,
遵循模式:
public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration)
{
MyConfigSettings myConfigSettings = new MyConfigSettings();
configuration.Bind("MyConfig", myConfigSettings);
services.AddSingleton(myConfigSettings);
return services;
}
现在MyConfigSettings
类看起来像这样:
public class MyConfigSettings
{
#pragma warning disable CA1056 // Uri properties should not be strings
public string HostUrl { get; set; }
}
是否有一种简单的方法可以使用System.Uri
代替System.String
作为HostUrl的类型,这样我们就不必取消Roslyn分析器警告CA1056了?
答案 0 :(得分:2)
将属性从string
更改为Uri
。
public class MyConfigSettings {
public Uri HostUrl { get; set; }
}
绑定应负责其余的工作。
您还可以像这样绑定到对象图
public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration) {
MyConfigSettings myConfigSettings = configuration.GetSection("MyConfig").Get<MyConfigSettings>();
services.AddSingleton(myConfigSettings);
return services;
}
ConfigurationBinder.Get<T>
绑定并返回指定的类型。Get<T>
比使用Bind
更方便。
前面的代码演示了如何在您的示例中使用Get<T>
,该示例允许将绑定的实例直接分配给该属性。