/// <summary> /// Registers a typed factory. /// </summary> /// <param name="factoryContractType"> /// The factory interface. /// </param> /// <param name="container"> /// The container. /// </param> /// <returns> /// The holder object which facilitates the fluent interface. /// </returns> /// <exception cref="ArgumentException"> /// Thrown when the <paramref name="factoryContractType"/> does not represent an interface type. /// </exception> public static ITypedFactoryRegistration RegisterTypedFactory(this IServiceCollection container, Type factoryContractType) { if (!factoryContractType.IsInterface) { throw new ArgumentException("The factory contract does not represent an interface!", "factoryContractType"); } var typedFactoryRegistration = new TypedFactoryRegistration(container, factoryContractType); return(typedFactoryRegistration); }
/// <summary> /// Registers a typed factory. /// </summary> /// <typeparam name="TFactory"> /// The factory interface. /// </typeparam> /// <param name="container"> /// The container. /// </param> /// <returns> /// The holder object which facilitates the fluent interface. /// </returns> public static ITypedFactoryRegistration RegisterTypedFactory <TFactory>(this IServiceCollection container) where TFactory : class { if (!typeof(TFactory).IsInterface) { throw new ArgumentException("The factory contract does not represent an interface!"); } var typedFactoryRegistration = new TypedFactoryRegistration <TFactory>(container); return(typedFactoryRegistration); }
public TypedFactoryFlavor(TypedFactoryRegistration typedFactoryRegistration) { this.typedFactoryRegistration = typedFactoryRegistration; }