使用Action委托时如何访问配置的值

时间:2018-04-30 06:00:50

标签: c# asp.net-core

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

MyOptions.cs

public class CustomOptions
{
    public int AppId { get; set; }
}

注册服务

public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options)

当我注册服务时:app.UseMyService(o =&gt; o.AppId = 1);

但是如何从服务中访问AppId?或者我错过了什么?我应该使用Func吗?

1 个答案:

答案 0 :(得分:1)

委托只不过是对方法的引用。您可以将匿名方法(作为委托或lambdas)或其参数与委托签名匹配的命名方法传递给它。

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;
});