首页 > 解决方案 > 使用操作委托时如何访问配置的值

问题描述

我正在尝试了解动作委托,但我遗漏了一些东西 - 如何访问配置的值?

我的选项.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 吗?

标签: c#asp.net-core

解决方案


委托只不过是对方法的引用。您可以将匿名方法(作为委托或 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;
});

推荐阅读