我正在尝试了解 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吗?
答案 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;
});