public T MakeObject()

in objectModel/CSharp/Microsoft.CommonDataModel.ObjectModel/Cdm/CdmCorpusDefinition.cs [717:860]


        public T MakeObject<T>(CdmObjectType ofType, string nameOrRef = null, bool simpleNameRef = false) where T : CdmObject
        {
            CdmObject newObj = null;

            switch (ofType)
            {
                case CdmObjectType.ArgumentDef:
                    newObj = new CdmArgumentDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.AttributeContextDef:
                    newObj = new CdmAttributeContext(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.AttributeContextRef:
                    newObj = new CdmAttributeContextReference(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.AttributeGroupDef:
                    newObj = new CdmAttributeGroupDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.AttributeGroupRef:
                    newObj = new CdmAttributeGroupReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.AttributeRef:
                    newObj = new CdmAttributeReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.AttributeResolutionGuidanceDef:
                    newObj = new CdmAttributeResolutionGuidance(this.Ctx);
                    break;
                case CdmObjectType.ConstantEntityDef:
                    newObj = new CdmConstantEntityDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.DataPartitionDef:
                    newObj = new CdmDataPartitionDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.DataPartitionPatternDef:
                    newObj = new CdmDataPartitionPatternDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.DataTypeDef:
                    newObj = new CdmDataTypeDefinition(this.Ctx, nameOrRef, null);
                    break;
                case CdmObjectType.DataTypeRef:
                    newObj = new CdmDataTypeReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.DocumentDef:
                    newObj = new CdmDocumentDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.EntityAttributeDef:
                    newObj = new CdmEntityAttributeDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.EntityDef:
                    newObj = new CdmEntityDefinition(this.Ctx, nameOrRef, null);
                    break;
                case CdmObjectType.EntityRef:
                    newObj = new CdmEntityReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.FolderDef:
                    newObj = new CdmFolderDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.ManifestDef:
                    newObj = new CdmManifestDefinition(this.Ctx, nameOrRef);

                    // Log and ingest a message when a new manifest is created
                    Logger.Debug(this.Ctx, Tag, $"{nameof(MakeObject)}<{typeof(T).Name}>", newObj.AtCorpusPath, "New Manifest created.", true);
                    break;
                case CdmObjectType.ManifestDeclarationDef:
                    newObj = new CdmManifestDeclarationDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.Import:
                    newObj = new CdmImport(this.Ctx, nameOrRef, null);
                    break;
                case CdmObjectType.LocalEntityDeclarationDef:
                    newObj = new CdmLocalEntityDeclarationDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.ParameterDef:
                    newObj = new CdmParameterDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.PurposeDef:
                    newObj = new CdmPurposeDefinition(this.Ctx, nameOrRef, null);
                    break;
                case CdmObjectType.PurposeRef:
                    newObj = new CdmPurposeReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.ReferencedEntityDeclarationDef:
                    newObj = new CdmReferencedEntityDeclarationDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.TraitDef:
                    newObj = new CdmTraitDefinition(this.Ctx, nameOrRef, null);
                    break;
                case CdmObjectType.TraitRef:
                    newObj = new CdmTraitReference(this.Ctx, nameOrRef, simpleNameRef, false);
                    break;
                case CdmObjectType.TraitGroupDef:
                    newObj = new CdmTraitGroupDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.TraitGroupRef:
                    newObj = new CdmTraitGroupReference(this.Ctx, nameOrRef, simpleNameRef);
                    break;
                case CdmObjectType.TypeAttributeDef:
                    newObj = new CdmTypeAttributeDefinition(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.E2ERelationshipDef:
                    newObj = new CdmE2ERelationship(this.Ctx, nameOrRef);
                    break;
                case CdmObjectType.ProjectionDef:
                    newObj = new CdmProjection(this.Ctx);
                    break;
                case CdmObjectType.OperationAddCountAttributeDef:
                    newObj = new CdmOperationAddCountAttribute(this.Ctx);
                    break;
                case CdmObjectType.OperationAddSupportingAttributeDef:
                    newObj = new CdmOperationAddSupportingAttribute(this.Ctx);
                    break;
                case CdmObjectType.OperationAddTypeAttributeDef:
                    newObj = new CdmOperationAddTypeAttribute(this.Ctx);
                    break;
                case CdmObjectType.OperationExcludeAttributesDef:
                    newObj = new CdmOperationExcludeAttributes(this.Ctx);
                    break;
                case CdmObjectType.OperationArrayExpansionDef:
                    newObj = new CdmOperationArrayExpansion(this.Ctx);
                    break;
                case CdmObjectType.OperationCombineAttributesDef:
                    newObj = new CdmOperationCombineAttributes(this.Ctx);
                    break;
                case CdmObjectType.OperationRenameAttributesDef:
                    newObj = new CdmOperationRenameAttributes(this.Ctx);
                    break;
                case CdmObjectType.OperationReplaceAsForeignKeyDef:
                    newObj = new CdmOperationReplaceAsForeignKey(this.Ctx);
                    break;
                case CdmObjectType.OperationIncludeAttributesDef:
                    newObj = new CdmOperationIncludeAttributes(this.Ctx);
                    break;
                case CdmObjectType.OperationAddAttributeGroupDef:
                    newObj = new CdmOperationAddAttributeGroup(this.Ctx);
                    break;
                case CdmObjectType.OperationAlterTraitsDef:
                    newObj = new CdmOperationAlterTraits(this.Ctx);
                    break;
                case CdmObjectType.OperationAddArtifactAttributeDef:
                    newObj = new CdmOperationAddArtifactAttribute(this.Ctx);
                    break;
            }
            return (T)newObj;
        }