Как получить доступ к настроенным значениям при использовании делегата Action - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь узнать о Действие делегатов, но мне чего-то не хватает - как получить доступ к настроенным значениям?

MyOptions.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 вместо этого?

1 Ответ

0 голосов
/ 30 апреля 2018

Делегат - это не что иное, как ссылка на метод. Вы можете передать ему анонимные методы (как делегаты или лямбды) или именованный метод, параметры которого соответствуют сигнатуре делегата.

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;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...