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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }