/// <summary> /// Initializes a new instance of the <see cref="ConfigurationItemFactory"/> class. /// </summary> /// <param name="assemblies">The assemblies to scan for named items.</param> public ConfigurationItemFactory(params Assembly[] assemblies) { CreateInstance = FactoryHelper.CreateInstance; _targets = new Factory <Target, TargetAttribute>(this); _filters = new Factory <Filter, FilterAttribute>(this); _layoutRenderers = new LayoutRendererFactory(this); _layouts = new Factory <Layout, LayoutAttribute>(this); _conditionMethods = new MethodFactory(classType => MethodFactory.ExtractClassMethods <ConditionMethodsAttribute, ConditionMethodAttribute>(classType)); _ambientProperties = new Factory <LayoutRenderer, AmbientPropertyAttribute>(this); _timeSources = new Factory <TimeSource, TimeSourceAttribute>(this); _allFactories = new IFactory[] { _targets, _filters, _layoutRenderers, _layouts, _conditionMethods, _ambientProperties, _timeSources, }; foreach (var asm in assemblies) { RegisterItemsFromAssembly(asm); } }
internal ConfigurationItemFactory(ServiceRepository serviceRepository, ConfigurationItemFactory globalDefaultFactory, params Assembly[] assemblies) { _serviceRepository = serviceRepository ?? throw new ArgumentNullException(nameof(serviceRepository)); _targets = new Factory <Target, TargetAttribute>(serviceRepository, globalDefaultFactory?._targets); _filters = new Factory <Filter, FilterAttribute>(serviceRepository, globalDefaultFactory?._filters); _layoutRenderers = new LayoutRendererFactory(serviceRepository, globalDefaultFactory?._layoutRenderers); _layouts = new Factory <Layout, LayoutAttribute>(serviceRepository, globalDefaultFactory?._layouts); _conditionMethods = new MethodFactory(globalDefaultFactory?._conditionMethods, classType => MethodFactory.ExtractClassMethods <ConditionMethodsAttribute, ConditionMethodAttribute>(classType)); _ambientProperties = new Factory <LayoutRenderer, AmbientPropertyAttribute>(serviceRepository, globalDefaultFactory?._ambientProperties); _timeSources = new Factory <TimeSource, TimeSourceAttribute>(serviceRepository, globalDefaultFactory?._timeSources); _allFactories = new IFactory[] { _targets, _filters, _layoutRenderers, _layouts, _conditionMethods, _ambientProperties, _timeSources, }; foreach (var asm in assemblies) { RegisterItemsFromAssembly(asm); } }