当前位置: 首页 > news >正文

做网站需要用到哪些开发软件网站建设与行政管理

做网站需要用到哪些开发软件,网站建设与行政管理,免费微信小程序制作平台?,百度百度一下你就知道主页.NET C# 配置 Options 使用 options 模式可以带来许多好处#xff0c;包括清晰的配置管理、类型安全、易于测试和灵活性。但在使用过程中#xff0c;也需要注意配置复杂性、性能开销和依赖框架等问题。通过合理设计和使用#xff0c;可以充分发挥 options 模式的优势#….NET C# 配置 Options 使用 options 模式可以带来许多好处包括清晰的配置管理、类型安全、易于测试和灵活性。但在使用过程中也需要注意配置复杂性、性能开销和依赖框架等问题。通过合理设计和使用可以充分发挥 options 模式的优势提高代码的可维护性和可靠性。 文章目录 .NET C# 配置 Options1 IConfigureOptions1.1 说明1.2 使用 2 IOptionsMonitor2.1 说明2.2 使用 3 IValidateOptions3.1 说明3.2 使用 环境 .NET6 1 IConfigureOptions 1.1 说明 IConfigureOptionsTOptions 接口用于配置选项类的实例。通过实现 IConfigureOptionsTOptions 接口你可以在应用程序启动时对选项进行额外的配置。 IConfigureOptionsTOptions 接口定义了一个方法 Configure用于配置选项类的实例。其定义如下 public interface IConfigureOptionsin TOptions where TOptions : class {void Configure(TOptions options); }优点说明集中配置可以在一个地方集中配置选项避免在多个地方重复配置。动态配置可以根据运行时条件动态配置选项。分离关注点将配置逻辑与业务逻辑分离提高代码的可维护性。易于测试可以单独测试配置逻辑确保配置的正确性。 缺点增加复杂性对于简单配置场景使用 IConfigureOptionsTOptions 可能会增加额外的复杂性。配置顺序依赖配置的顺序可能会影响最终的配置结果需要注意配置的执行顺序。 1.2 使用 配置类 public class SettingsBase {public override string ToString(){return string.Join(Environment.NewLine, this.GetType().GetProperties().Select(p {if (p.GetValue(this, null) is IList list){return p.Name string.Join(, , list.Castobject());}return p.Name p.GetValue(this, null);}));} }public class TestSettings : SettingsBase {public string StringSetting { get; set; }public int IntSetting { get; set; }public bool BoolSetting { get; set; }public double DoubleSetting { get; set; }public DateTime DateTimeSetting { get; set; }public Liststring ListSetting { get; set; } }配置器 public class TestSettingsConfigurator : IConfigureOptionsTestSettings {public void Configure(TestSettings options){options.BoolSetting true;options.DateTimeSetting DateTime.Now;options.DoubleSetting 0.123456789;options.IntSetting 123456789;options.ListSetting new Liststring { Item1, Item2, Item3 };options.StringSetting Test String;} }依赖注入 public class Program {public static void Main(string[] args){var builder WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklebuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();// 注册配置器builder.Services.AddSingletonIConfigureOptionsTestSettings, TestSettingsConfigurator();var app builder.Build();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){app.UseSwagger();app.UseSwaggerUI();}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();} }控制器 [Route(api/[controller])] [ApiController] public class ConfigsController : ControllerBase {private readonly IOptionsTestSettings _testSettingsOptions;private readonly ILoggerConfigsController _logger;public ConfigsController(ILoggerConfigsController logger, IOptionsTestSettings testConfigureOptions){_testSettingsOptions testConfigureOptions;_logger logger;}[HttpGet(GetConfig)]public IActionResult GetConfig(){return Ok(_testSettingsOptions.Value);} }测试 2 IOptionsMonitor 2.1 说明 IOptionsMonitorTOptions 用于监控选项更改并提供选项的即时快照。它的主要作用是提供一种方法来在选项值更改时得到通知并且在应用程序运行时获取当前的选项值。 // // 摘要: // 用于在选项实例更改时通知。 // // 类型参数: // TOptions: // 选项类型。 public interface IOptionsMonitor[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] out TOptions {//// 摘要:// 使用Microsoft.Extensions.Options.Options.DefaultName返回当前的options实例。TOptions CurrentValue { get; }//// 摘要:// 返回具有给定名称的配置的TOptions实例。TOptions Get(string name);//// 摘要:// 注册一个监听器当命名选项发生变化时调用。//// 参数:// listener:// 当选项发生变化时调用的操作。//// 返回结果:// 一个可销毁对象以停止监听变化。IDisposable OnChange(ActionTOptions, string listener); }IOptionsMonitorTOptions 提供以下功能 获取当前值可以获取选项的当前值。变更通知当选项值更改时可以订阅通知。 IOptionsMonitorTOptions 应用场景 需要在运行时动态更新配置。需要对配置的变化进行响应。 2.2 使用 控制器 [HttpGet(GetMonitorConfig)] public IActionResult GetMonitorConfig() {return Ok(_testSettingsMonitor.CurrentValue); }测试 3 IValidateOptions 3.1 说明 IValidateOptionsTOptions 用于验证选项值的有效性。通过实现这个接口你可以确保配置的值符合预期的规则和约束在应用程序启动时或配置变更时进行验证。IValidateOptionsTOptions 接口定义了一种方法用于验证选项实例的值并返回验证结果。它提供了一种集中管理选项验证逻辑的方式。 public interface IValidateOptionsTOptions where TOptions : class {//// 摘要:// 验证指定的命名选项实例(当name为null时验证全部)。//// 参数:// name:// 正在验证的选项实例的名称。//// options:// options实例。//// 返回结果:// Microsoft.Extensions.Options.ValidateOptionsResult 结果。ValidateOptionsResult Validate(string name, TOptions options); }3.2 使用 验证器 public class TestSettingsValidator : IValidateOptionsTestSettings {public ValidateOptionsResult Validate(string? name, TestSettings options){if (string.IsNullOrEmpty(options.StringSetting)){return ValidateOptionsResult.Fail(StringSetting cannot be null or empty.);}if (options.DoubleSetting 1){return ValidateOptionsResult.Fail(DoubleSetting must be greater than 1.);}return ValidateOptionsResult.Success;} }依赖注入 builder.Services.AddSingletonIValidateOptionsTestSettings, TestSettingsValidator();测试
http://www.dnsts.com.cn/news/256486.html

相关文章:

  • 重庆建站公司价钱国际域名注册商
  • 高碑店网站建设电子商务网站建设以什么为核心
  • 网站开发php工资用python做 网站论坛
  • mysql网站后台管理系统下载全球电商平台排行榜前十名
  • 求个网站能用的网站排名网络推广
  • 英文网站开发哪家好深州做网站公司
  • 写作网站网站建设 镇江万达
  • 我要网站建设全网是哪些平台
  • 爱做网站无锡做公司网站多少钱
  • asp网站查看器网站建设分金手指排名十二
  • 网站3d特效源码示范专业网站建设
  • 现在建网站做淘宝联盟推广能赚钱吗电子商务主要学什么就业前景好不好
  • 如何注册一个网站网站建设理由和目的
  • 佛山家居网站全网营销做门户网站的意义在哪
  • dw网页设计软件的学习网站泰州网站建设要多少钱
  • 有哪些网站可以推广seo推广服务
  • 网站首页怎么做全屏swf商城网站建设合同书
  • 东莞设计兼职网站建设柳州电商网站建设
  • 网站建设网站源码枣阳网站建设
  • 如何整合网站wordpress模版如何套用
  • 包装公司网站模板民宅挂在民宿网站上 保洁谁做
  • 合肥那个公司做网站优化好成都高新区国土规划建设局网站
  • 新潮远网站建设山东建设厅网站是什么
  • 深圳企业网站建设推广服务邯郸今天最新通告
  • asp网站安装教程展馆设计公司排名
  • 机械加工网站色彩搭配广州通报: 广州通报
  • 网站建设销售一个月营业额做一个手机购物网站多少钱
  • 西安网站建设推广专家厦门哪家做网站好
  • 品牌网站建设流程建设一个小说网站的步骤
  • 网站建设 通知做vi的图有网站吗