/// <summary> /// Injects multiple instances of <typeparamref name="T"/> for this instance builder, one per item in the source sequence, via the factory function passed to this method. /// </summary> /// <typeparam name="TSource">The type of items in the source sequence.</typeparam> /// <typeparam name="T">The type of instance to create.</typeparam> /// <param name="builder">The instance builder.</param> /// <param name="source">The source sequence.</param> /// <param name="function">The factory function that transforms a source sequence item to an instance of <typeparamref name="T"/>.</param> public static InstanceBuilder WithMany <TSource, T>(this IInstanceBuilder builder, IEnumerable <TSource> source, Func <InstanceBuilder, TSource, T> function) { _ = builder ?? throw new ArgumentNullException(nameof(builder)); _ = source ?? throw new ArgumentNullException(nameof(source)); _ = function ?? throw new ArgumentNullException(nameof(function)); return(builder.With(source.Select(x => function(builder.Copy(), x)).ToList())); }
/// <summary> /// Injects multiple instances of <typeparamref name="T"/> for this instance builder, one per factory function passed to this method. /// </summary> /// <typeparam name="T">The type of instance to create.</typeparam> /// <param name="builder">The instance builder.</param> /// <param name="factoryFunctions">A series of factory functions.</param> public static InstanceBuilder WithMany <T>(this IInstanceBuilder builder, params Func <InstanceBuilder, T>[] factoryFunctions) { _ = builder ?? throw new ArgumentNullException(nameof(builder)); _ = factoryFunctions ?? throw new ArgumentNullException(nameof(factoryFunctions)); return(builder.With(factoryFunctions.Select(factoryFunction => factoryFunction(builder.Copy())).ToList())); }
/// <summary> /// Injects a single instance of <typeparamref name="T"/> for this instance builder, using the factory function passed to this method. /// </summary> /// <typeparam name="T">The type of instance to create.</typeparam> /// <param name="builder">The instance builder.</param> /// <param name="factoryFunction">A factory function.</param> public static InstanceBuilder With <T>(this IInstanceBuilder builder, Func <InstanceBuilder, T> factoryFunction) { _ = builder ?? throw new ArgumentNullException(nameof(builder)); _ = factoryFunction ?? throw new ArgumentNullException(nameof(factoryFunction)); return(builder.With(factoryFunction(builder.Copy()) !)); }