C# 使用操作委托时如何访问配置的值

C# 使用操作委托时如何访问配置的值,c#,asp.net-core,C#,Asp.net Core,我试图了解操作委托,但我缺少一些东西-如何访问配置的值 MyOptions.cs: public class CustomOptions { public int AppId { get; set; } } public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options) 注册服务: public class Cus

我试图了解操作委托,但我缺少一些东西-如何访问配置的值

MyOptions.cs

public class CustomOptions
{
    public int AppId { get; set; }
}
public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options)
注册服务

public class CustomOptions
{
    public int AppId { get; set; }
}
public static IApplicationBuilder UseMyService(this IApplicationBuilder builder, Action<CustomOptions> options)
公共静态IApplicationBuilder UseMyService(此IApplicationBuilder,操作选项)
当我注册服务时,我会这样做:app.UseMyService(o=>o.AppId=1)


但是如何从服务内部访问AppId?还是我遗漏了什么?我应该改用Func吗?

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

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

您的
UseMyService
方法是什么样子的?我希望您的服务构造函数接受一个
CustomOptions
,然后像任何其他依赖项一样注入,但我承认我自己没有编写任何自定义中间件。
var optioninstance=new MyOptions();选项。?调用(选项实例)
。之后,
optionInstance
将填充在UseMyService中传递的值。您的
UseMyService
方法是什么样的?我希望您的服务构造函数接受一个
CustomOptions
,然后像任何其他依赖项一样注入,但我承认我自己没有编写任何自定义中间件。
var optioninstance=new MyOptions();选项。?调用(选项实例)
。之后,
optionInstance
将填充在UseMyService中传递的值