public ModuleArchitecture GetOrCreateModule(String name) { ArgumentValidator.ValidateNotNull("Module name", name); ModuleArchitectureImpl result = null; if (!this._modules.CQ.TryGetValue(name, out result)) { result = new ModuleArchitectureImpl(name, this, this._metaInfo.Query, this._compositeIDGenerator, this._modelTypeSupport); this._modules.Add(name, result); } return(result); }
protected ModuleModelMutable NewModuleModel(DictionaryQuery <CompositeModelType, CompositeModelTypeModelScopeSupport> compositeModelTypeSupport, DictionaryProxy <Int32, CompositeModel> models, LayerModelMutable owningLayer, ModuleArchitectureImpl module) { var state = new ModuleModelState(this.CollectionsFactory); var immutable = new ModuleModelImmutable(state); var result = new ModuleModelMutable(state, immutable); state.ModuleName = module.Name; state.LayerModel = owningLayer; state.Assembler = module.LayeredCompositeAssembler; foreach (var modelType in this.ModelTypeSupport.Keys) { IDictionary <CompositeModel, Visibility> visibilities = null; if (!state.CompositeVisibilities.TryGetValue(modelType, out visibilities)) { visibilities = new Dictionary <CompositeModel, Visibility>(ReferenceEqualityComparer <CompositeModel> .ReferenceBasedComparer); state.CompositeVisibilities.Add(modelType, visibilities); } foreach (LayeredCompositeAssemblyInfo info in module.LayeredCompositeAssembler.GetInfos(modelType).Cast <LayeredCompositeAssemblyInfo>()) { var cModel = this.NewCompositeModel(compositeModelTypeSupport, owningLayer.IQ.ApplicationModel, info, owningLayer.IQ.LayerName + "-" + module.Name); models.Add(cModel.CompositeModelID, cModel); state.CompositeModels.Add(cModel); visibilities.Add(cModel, info.Visibility); } } return(result); }