예제 #1
0
        private void AddMemberField(string memberName, CodeTypeReference memberType, CodeTypeDeclaration parentType)
        {
            CodeMemberField mem = new CodeMemberField(memberType, memberName)
            {
                Attributes = MemberAttributes.Private
            };

            CodeDomHelper.AddBrowseNever(mem);
            parentType.Members.Add(mem);
        }
예제 #2
0
        public static CodeMemberField CreateMemberField(string memberName, string typeName, MemberAttributes attributes, bool init)
        {
            CodeMemberField field = new CodeMemberField(typeName, memberName);

            CodeDomHelper.AddBrowseNever(field);
            field.Attributes = attributes;
            if (init)
            {
                field.InitExpression = new CodeObjectCreateExpression(typeName, new CodeExpression[0]);
            }
            return(field);
        }
예제 #3
0
        public static CodeMemberField CreateGenericMemberField(string memberName, string typeName, CodeTypeReference[] typeParams, MemberAttributes attributes, bool init)
        {
            CodeTypeReference typeRef = new CodeTypeReference(typeName, typeParams);
            CodeMemberField   field   = new CodeMemberField(typeRef, memberName);

            CodeDomHelper.AddBrowseNever(field);
            field.Attributes = attributes;
            if (init)
            {
                field.InitExpression = new CodeObjectCreateExpression(typeRef, new CodeExpression[0]);
            }
            return(field);
        }
예제 #4
0
        private CodeMemberProperty BuildLocalElementDictionary()
        {
            CodeMemberProperty localDictionaryProperty = CodeDomHelper.CreateInterfaceImplProperty("LocalElementsDictionary", "IXMetaData", CodeDomHelper.CreateDictionaryType("XName", "System.Type"));
            CodeMemberField    localDictionaryField    = CodeDomHelper.CreateDictionaryField("localElementDictionary", "XName", "System.Type");
            CodeMemberMethod   localDictionaryMethod   = CodeDomHelper.CreateMethod("BuildElementDictionary", MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.Assembly | MemberAttributes.FamilyOrAssembly | MemberAttributes.Private, null);

            localDictionaryMethod.Statements.AddRange(this.propertyDictionaryAddStatements);
            this.decl.Members.Add(localDictionaryField);
            this.decl.Members.Add(localDictionaryMethod);
            localDictionaryProperty.GetStatements.Add(new CodeMethodReturnStatement(CodeDomHelper.CreateFieldReference(null, "localElementDictionary")));
            CodeDomHelper.AddBrowseNever(localDictionaryProperty);
            CodeDomHelper.AddBrowseNever(localDictionaryField);
            return(localDictionaryProperty);
        }
예제 #5
0
 protected void CreateFixedDefaultValue(CodeTypeDeclaration typeDecl)
 {
     if (this.fixedDefaultValue != null)
     {
         CodeMemberField   fixedOrDefaultField = null;
         CodeTypeReference returnType          = this.ReturnType;
         if (this.unionDefaultType != null)
         {
             returnType = new CodeTypeReference(this.unionDefaultType.ToString());
         }
         fixedOrDefaultField = (this.FixedValue == null ? new CodeMemberField(returnType, NameGenerator.ChangeClrName(base.PropertyName, NameOptions.MakeDefaultValueField)) : new CodeMemberField(returnType, NameGenerator.ChangeClrName(base.PropertyName, NameOptions.MakeFixedValueField)));
         CodeDomHelper.AddBrowseNever(fixedOrDefaultField);
         fixedOrDefaultField.Attributes     = fixedOrDefaultField.Attributes & (MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.Override | MemberAttributes.Const | MemberAttributes.New | MemberAttributes.Overloaded | MemberAttributes.ScopeMask | MemberAttributes.VTableMask) & (MemberAttributes.New | MemberAttributes.Overloaded | MemberAttributes.Assembly | MemberAttributes.FamilyAndAssembly | MemberAttributes.Family | MemberAttributes.FamilyOrAssembly | MemberAttributes.Private | MemberAttributes.Public | MemberAttributes.AccessMask | MemberAttributes.VTableMask) | MemberAttributes.Private | MemberAttributes.Static;
         fixedOrDefaultField.InitExpression = SimpleTypeCodeDomHelper.CreateFixedDefaultValueExpression(returnType, this.fixedDefaultValue);
         typeDecl.Members.Add(fixedOrDefaultField);
     }
 }
예제 #6
0
        private void ImplementIXMetaData()
        {
            string             interfaceName      = "IXMetaData";
            CodeMemberProperty schemaNameProperty = CodeDomHelper.CreateSchemaNameProperty(this.clrTypeInfo.schemaName, this.clrTypeInfo.schemaNs);

            this.ImplementCommonIXMetaData();
            if (!this.clrTypeInfo.HasElementWildCard)
            {
                this.ImplementContentModelMetaData();
            }
            else
            {
                this.ImplementFSMMetaData();
            }
            CodeMemberProperty typeOriginProperty = CodeDomHelper.CreateTypeOriginProperty(this.clrTypeInfo.typeOrigin);

            CodeDomHelper.AddBrowseNever(schemaNameProperty);
            CodeDomHelper.AddBrowseNever(typeOriginProperty);
            this.decl.Members.Add(schemaNameProperty);
            this.decl.Members.Add(typeOriginProperty);
            this.decl.Members.Add(CodeDomHelper.AddBrowseNever(CodeDomHelper.CreateTypeManagerProperty()));
            this.decl.BaseTypes.Add(interfaceName);
        }
예제 #7
0
        protected override void ImplementContentModelMetaData()
        {
            CodeMemberMethod getContentModelMethod = null;

            if (!this.HasElementProperties)
            {
                getContentModelMethod = TypeBuilder.DefaultContentModel();
            }
            else if (this.declItemsInfo.contentModelExpression == null)
            {
                getContentModelMethod = TypeBuilder.DefaultContentModel();
            }
            else
            {
                CodeTypeReference cmType = new CodeTypeReference("ContentModelEntity");
                this.declItemsInfo.staticConstructor.Statements.Add(new CodeAssignStatement(new CodeVariableReferenceExpression("contentModel"), this.declItemsInfo.contentModelExpression));
                CodeMemberField contentModelField = new CodeMemberField(cmType, "contentModel");
                CodeDomHelper.AddBrowseNever(contentModelField);
                contentModelField.Attributes = MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.Assembly | MemberAttributes.FamilyOrAssembly | MemberAttributes.Private;
                this.decl.Members.Add(contentModelField);
                getContentModelMethod = CodeDomHelper.CreateInterfaceImplMethod("GetContentModel", "IXMetaData", cmType, "contentModel");
            }
            this.decl.Members.Add(getContentModelMethod);
        }