C# 在ASP.net核心应用程序的强类型配置类中使用System.Uri
在我们的C# 在ASP.net核心应用程序的强类型配置类中使用System.Uri,c#,asp.net-core,uri,C#,Asp.net Core,Uri,在我们的aspnetcore2.2应用程序中,我们将强类型类用于配置部分, 按照这种模式: public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration) { MyConfigSettings myConfigSettings = new MyConfigSettings(); configuration.Bin
aspnetcore2.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 analyzer警告?将属性从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;
}
公共静态IServiceCollection AddMyConfigSettings(此IServiceCollection服务,IConfiguration配置){
MyConfigSettings MyConfigSettings=configuration.GetSection(“MyConfig”).Get();
服务。添加单例(myConfigSettings);
返回服务;
}
绑定并返回指定的类型Get
比使用Bind
更方便
前面的代码显示了如何在示例中使用Get
,这允许将绑定实例直接分配给属性
Reference如果它不能自动工作,请在属性setter中将字符串解析为URI?只需将属性从字符串更改为URI即可。绑定应该处理由
Uri(string)
构造函数创建的restUri实例,该构造函数不同于设置/选项模式中理想的构造函数。至少使用类似于//servername/C$
的值。感谢您的提示!在提出这个问题时,我考虑的是internet链接,我没有考虑使用URI表示Windows路径的场景。