/// <summary> /// Register Commix dependencies /// </summary> /// <param name="serviceCollection">The service collection.</param> /// <param name="config">The configuration.</param> /// <returns></returns> public static IServiceCollection AddCommix(this IServiceCollection serviceCollection, Action <CommixConfigurator> config = null) { var configurator = new CommixConfigurator(serviceCollection); configurator.RegisterProcessors("Commix"); config?.Invoke(configurator); serviceCollection.AddSingleton(configurator.Options); // Default Processor factory if (serviceCollection.All(x => x.ServiceType != typeof(IProcessorFactory))) { configurator.SetProcessorFactory <DefaultProcessorFactory>(); } // Default Pipeline factories if (serviceCollection.All(x => x.ServiceType != typeof(IMappingPipelineFactory))) { configurator.SetMappingPipelineFactory <DefaultModelPiplineFactory>(); } if (serviceCollection.All(x => x.ServiceType != typeof(IPropertyPipelineFactory))) { configurator.SetPropertyPipelineFactory <DefaultPropertyPipelineFactory>(); } // Default Model Pipeline processors if (serviceCollection.All(x => x.ServiceType != typeof(ISchemeGenerator))) { serviceCollection.AddTransient <ISchemeGenerator, InMemorySchemaGeneratorProcessor>(); } if (serviceCollection.All(x => x.ServiceType != typeof(IMappingProcessor))) { serviceCollection.AddTransient <IMappingProcessor, MappingProcessor>(); } // Pipelines, intended that these are not replaced, but modified as needed with processors and configured via factory. serviceCollection.AddTransient <MappingPipeline>(); serviceCollection.AddTransient <PropertyPipeline>(); return(serviceCollection); }
public static CommixConfigurator ModelPipelineFactory <T>(this CommixConfigurator config) where T : class, IMappingPipelineFactory { config.SetMappingPipelineFactory <T>(); return(config); }
public static CommixConfigurator ProcessorFactory <T>(this CommixConfigurator config) where T : class, IProcessorFactory { config.SetProcessorFactory <T>(); return(config); }
public static CommixConfigurator Processors(this CommixConfigurator config, string assemblyPrefix) { config.RegisterProcessors(assemblyPrefix); return(config); }
public static CommixConfigurator PropertyPipelineFactory <T>(this CommixConfigurator config) where T : class, IPropertyPipelineFactory { config.SetPropertyPipelineFactory <T>(); return(config); }