Esempio n. 1
0
        protected override void ImplementFSMMetaData()
        {
            Debug.Assert(this.clrTypeInfo.HasElementWildCard);
            if (this.fsmNameSource != null)
            {
                this.fsmNameSource.Reset();
            }
            else
            {
                this.fsmNameSource = new StateNameSource();
            }
            FSM fsm = this.clrTypeInfo.CreateFSM(this.fsmNameSource);

            this.decl.Members.Add(CodeDomHelper.CreateMemberField("validationStates", "FSM", MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.Assembly | MemberAttributes.FamilyOrAssembly | MemberAttributes.Private, false));
            CodeMemberMethod getFSM = CodeDomHelper.CreateInterfaceImplMethod("GetValidationStates", "IXMetaData", new CodeTypeReference("FSM"));

            getFSM.Statements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(null, "validationStates")));
            this.decl.Members.Add(getFSM);
            CodeMemberMethod initFSM = CodeDomHelper.CreateMethod("InitFSM", MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.Assembly | MemberAttributes.FamilyOrAssembly | MemberAttributes.Private, new CodeTypeReference());

            FSMCodeDomHelper.CreateFSMStmt(fsm, initFSM.Statements);
            this.decl.Members.Add(initFSM);
            this.CreateStaticConstructor();
            this.declItemsInfo.staticConstructor.Statements.Add(CodeDomHelper.CreateMethodCall(null, "InitFSM", null));
        }
Esempio n. 2
0
 protected static CodeMemberMethod DefaultContentModel()
 {
     if (TypeBuilder.defaultContentModel == null)
     {
         CodeMemberMethod getContentModelMethod = CodeDomHelper.CreateInterfaceImplMethod("GetContentModel", "IXMetaData", new CodeTypeReference("ContentModelEntity"));
         getContentModelMethod.Statements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression("ContentModelEntity"), "Default")));
         Interlocked.CompareExchange <CodeMemberMethod>(ref TypeBuilder.defaultContentModel, getContentModelMethod, null);
     }
     return(TypeBuilder.defaultContentModel);
 }
Esempio n. 3
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);
        }