/// <summary> /// Registers a <see cref="IDeliveryClient"/> instance to an <see cref="IDeliveryClient"/> interface in <see cref="ServiceCollection"/>. /// </summary> /// <param name="services">A <see cref="ServiceCollection"/> instance for registering and resolving dependencies.</param> /// <param name="buildDeliveryOptions">A function that is provided with an instance of <see cref="DeliveryOptionsBuilder"/>and expected to return a valid instance of <see cref="DeliveryOptions"/>.</param> /// <returns>The <paramref name="services"/> instance with <see cref="IDeliveryClient"/> registered in it</returns> public static IServiceCollection AddDeliveryClient(this IServiceCollection services, Func <IDeliveryOptionsBuilder, DeliveryOptions> buildDeliveryOptions) { if (buildDeliveryOptions == null) { throw new ArgumentNullException(nameof(buildDeliveryOptions), "The function for creating Delivery options is null."); } return(services .RegisterOptions(DeliveryOptionsHelpers.Build(buildDeliveryOptions)) .RegisterDependencies()); }
/// <summary> /// Registers a delegate that will be used to configure a named <see cref="IDeliveryClient"/> via <see cref="IDeliveryClientFactory"/> /// </summary> ///<param name="name">The name of the client configuration</param> /// <param name="services">A <see cref="ServiceCollection"/> instance for registering and resolving dependencies.</param> /// <param name="buildDeliveryOptions">A function that is provided with an instance of <see cref="DeliveryOptionsBuilder"/>and expected to return a valid instance of <see cref="DeliveryOptions"/>.</param> /// <param name="namedServiceProviderType">A named service provider type.</param> /// <returns>The <paramref name="services"/> instance with <see cref="IDeliveryClient"/> registered in it</returns> public static IServiceCollection AddDeliveryClient(this IServiceCollection services, string name, Func <IDeliveryOptionsBuilder, DeliveryOptions> buildDeliveryOptions, NamedServiceProviderType namedServiceProviderType = NamedServiceProviderType.None) { if (buildDeliveryOptions == null) { throw new ArgumentNullException(nameof(buildDeliveryOptions), "The function for creating Delivery options is null."); } var options = DeliveryOptionsHelpers.Build(buildDeliveryOptions); options.Name = name; return(services .RegisterOptions(options, name) .RegisterDependencies(true) .RegisterNamedServices(namedServiceProviderType)); }