.net core 验证 Options 参数
.net core 中通过 PostConfigure
验证 Options 参数
Intro
在 .net core 中配置项推荐用 Options 来实现,有一些参数可能必须是用由用户来配置,不能直接写成默认值的参数,这样就需要就 Options 中的参数做一些校验,否则程序内部可能就会出现一些意想不到的异常,今天介绍一个比较简单的,通过 PostConfigure
的方式来实现Options 参数的校验。
实现
在 PostConfigure 的委托中对所需验证的参数进行检查,如果参数不合法就抛一个异常出来,
在依赖注入获取这个 Option 的时候如果不满足条件就会抛出一个异常,而通过异常的 stacktrace 就可以看出来是哪里的错误了
public static IServiceCollection AddAliyunService(this IServiceCollection serviceCollection, Action<AliyunServiceOption> configAction) { if (configAction != null) { serviceCollection.Configure(configAction); } serviceCollection.PostConfigure<AliyunServiceOption>(options => { if (string.IsNullOrWhiteSpace(options.AccessKeyId)) { throw new ArgumentNullException(nameof(options.AccessKeyId), $"{nameof(AliyunServiceOption)} {nameof(options.AccessKeyId)} can not be null or empty"); } if (string.IsNullOrWhiteSpace(options.AccessKeySecret)) { throw new ArgumentNullException(nameof(options.AccessKeySecret), $"{nameof(AliyunServiceOption)} {nameof(options.AccessKeySecret)} can not be null or empty"); } }); serviceCollection.TryAddSingleton<IAliyunService, AliyunService>(); return serviceCollection; }
在 Reference 中给出了一些其他的实现方式,可以参考,在此不做详细介绍。
.net core 3.0 会微软会给出一个更好的验证方式,详见 Options Validation: support eager validation
Reference
- https://stackoverflow.com/questions/49651259/asp-net-core-option-validation
- https://github.com/aspnet/Extensions/issues/459
- https://www.stevejgordon.co.uk/asp-net-core-2-2-options-validation
原文地址:https://www.cnblogs.com/weihanli/p/options-validation-via-post-configure.html
相关推荐
-
【长期更新】迈向现代化的 .Net 配置指北 C#
2019-8-30
-
WPF TreeView 虚拟化-设置滚动到选中项,WPF 列表开启虚拟化的方式 C#
2019-6-14
-
ASP.NET Core 借助 K8S 玩转容器编排 C#
2019-7-23
-
.NET 5 中的正则引擎性能改进(翻译) C#
2020-6-13
-
简单说一下UWP中的JumpList C#
2019-5-17
-
.Net微服务实践(一)[框架]:微服务框架选型 C#
2020-6-13
-
ASP.NET Core WebApi中使用FluentValidation验证数据模型 C#
2019-5-5
-
Google Chrome 书签导出并生成 MHTML 文件 C#
2019-5-23
-
理解ASP.NET Core 依赖注入 C#
2019-8-15
-
Netty 中的心跳检测机制 C#
2020-6-12