internal SingletonArchitectureImpl(IEnumerable <CompositeModelTypeAssemblyScopeSupport> modelTypeSupport) : base(modelTypeSupport) { // Default composite assembler this._compositeAssembler = new SingletonAssemblerImpl(this, new CompositeIDGenerator().IDGeneratorFunction, this.ModelTypeSupport, this.UsesContainer, this.CollectionsFactory); // Domain specific assembler holder this._domainSpecificAssemblers = new DomainSpecificAssemblerAggregatorImpl <Assembler>(this.CollectionsFactory); }
internal ModuleArchitectureImpl( String moduleName, LayerArchitecture layer, UsesContainerQuery parentContainer, Func <Int32> compositeIDGenerator, DictionaryQuery <CompositeModelType, CompositeModelTypeAssemblyScopeSupport> modelTypeSupport ) { ArgumentValidator.ValidateNotNull("Layer", layer); ArgumentValidator.ValidateNotNull("Parent meta-info container", parentContainer); this._moduleName = moduleName; this._layer = layer; this._metaInfo = UsesContainerMutableImpl.CreateWithParent(parentContainer); this._assembler = new LayeredCompositeAssemblerImpl(this, compositeIDGenerator, modelTypeSupport, this._metaInfo, layer.Architecture.CollectionsFactory); this._domainSpecificAssemblers = new DomainSpecificAssemblerAggregatorImpl <LayeredCompositeAssembler>(layer.Architecture.CollectionsFactory); }
internal LayerArchitectureImpl( LayeredArchitecture application, UsesContainerQuery parentContainer, Func <Int32> compositeIDGenerator, DictionaryQuery <CompositeModelType, CompositeModelTypeAssemblyScopeSupport> modelTypeSupport, String name, Action <LayerArchitecture[]> usageAction ) { ArgumentValidator.ValidateNotNull("Application", application); ArgumentValidator.ValidateNotNull("Model type support", modelTypeSupport); ArgumentValidator.ValidateNotNull("Composite ID Generator", compositeIDGenerator); ArgumentValidator.ValidateNotNull("Action to tell usage", usageAction); ArgumentValidator.ValidateNotNull("Parent meta-info container", parentContainer); this._application = application; this._compositeIDGenerator = compositeIDGenerator; this._usageAction = usageAction; this._layerName = name; this._modelTypeSupport = modelTypeSupport; this._metaInfo = UsesContainerMutableImpl.CreateWithParent(parentContainer); this._modules = application.CollectionsFactory.NewDictionaryProxy <String, ModuleArchitectureImpl>(); this._domainSpecificAssemblers = new DomainSpecificAssemblerAggregatorImpl <LayerArchitecture>(application.CollectionsFactory); }