Делегат - это не что иное, как ссылка на метод. Вы можете передать ему анонимные методы (как делегаты или лямбды) или именованный метод, параметры которого соответствуют сигнатуре делегата.
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;
});