c# - 使用操作委托时如何访问配置的值
问题描述
我正在尝试了解动作委托,但我遗漏了一些东西 - 如何访问配置的值?
我的选项.cs:
public class CustomOptions
{
public int AppId { get; set; }
}
注册服务:
public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options)
当我注册我做的服务时: app.UseMyService(o => o.AppId = 1);
但是如何从服务内部访问 AppId 呢?还是我错过了什么?我应该改用 Func 吗?
解决方案
委托只不过是对方法的引用。您可以将匿名方法(作为委托或 lambda)传递给它,也可以将其参数与委托签名匹配的命名方法传递给它。
public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options)
{
var defaultOptions = new CustomOptions();
// you can initialize defaultOptions here with default vaues
// then invoke the delegate to override specific values
options?.Invoke(defaultOptions);
}
这样您在设置时不必填写所有参数
app.UseMyService(options => {
options.AppId = 2;
});
推荐阅读
- python - 建立网络模型
- java - java中的while循环总是返回true
- apache - 以上是客户端发送的 HTTP 简单请求消息的示例。消息有问题吗?
- firebase - 如何检查特定文档 ID 中是否包含某个值?
- javascript - 如何重新调整列表(下拉列表),复制 React JavaScript 中选项选择器的原始代码?
- ios - AppDelegate 和 TabBarViewController
- python - 使用 MIMEApplication 将 Pandas Dataframe 转换为电子邮件附件
- json - 无法将道具传递给Vue js中的子组件
- javascript - 在表格元素上传递对象
- python - 使用 glob ** 根据递归参数匹配文件扩展名