Example #1
0
        internal void CreateTypeDeclaration(ClrTypeInfo clrTypeInfo)
        {
            this.clrTypeInfo = clrTypeInfo;
            this.SetElementWildCardFlag(clrTypeInfo.HasElementWildCard);
            string              schemaName  = clrTypeInfo.schemaName;
            string              schemaNs    = clrTypeInfo.schemaNs;
            string              clrTypeName = clrTypeInfo.clrtypeName;
            SchemaOrigin        typeOrigin  = clrTypeInfo.typeOrigin;
            CodeTypeDeclaration typeDecl    = CodeDomHelper.CreateTypeDeclaration(clrTypeName, this.InnerType);

            if (clrTypeInfo.IsAbstract)
            {
                CodeTypeDeclaration typeAttributes = typeDecl;
                typeAttributes.TypeAttributes = typeAttributes.TypeAttributes | TypeAttributes.Abstract;
            }
            else if (clrTypeInfo.IsSealed)
            {
                CodeTypeDeclaration codeTypeDeclaration = typeDecl;
                codeTypeDeclaration.TypeAttributes = codeTypeDeclaration.TypeAttributes | TypeAttributes.Sealed;
            }
            this.decl = typeDecl;
            this.AddBaseType();
            this.CreateServicesMembers();
            this.CreateDefaultConstructor(clrTypeInfo.Annotations);
        }
Example #2
0
        private void CreateXRoot(CodeNamespace codeNamespace, string rootName, List <CodeTypeDeclaration> elements,
                                 List <CodeNamespace> namespaces, GeneratedTypesVisibility visibility = GeneratedTypesVisibility.Public)
        {
            LocalSymbolTable lst = new LocalSymbolTable();

            CodeTypeDeclaration xroot = CodeDomHelper.CreateTypeDeclaration(rootName, null, visibility);

            //Create Methods
            CodeMemberField docField = CodeDomHelper.CreateMemberField("doc",
                                                                       "XDocument",
                                                                       false, MemberAttributes.Private);

            CodeMemberField rootField = CodeDomHelper.CreateMemberField("rootObject",
                                                                        Constants.XTypedElement,
                                                                        false, MemberAttributes.Private);

            xroot.Members.Add(docField);
            xroot.Members.Add(rootField);


            lst.Init(rootName);
            lst.RegisterMember("doc");
            lst.RegisterMember("rootObject");
            lst.RegisterMember("Load");
            lst.RegisterMember("Parse");
            lst.RegisterMember("Save");
            lst.RegisterMember("XDocument");
            lst.RegisterMember("Root");

            // Constructor
            xroot.Members.Add(CodeDomHelper.CreateConstructor(MemberAttributes.Private));

            //Load Methods
            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load",
                                                              new string[][] { new string[] { "System.String", "xmlFile" } }, visibility));

            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", new string[][]
            {
                new string[] { "System.String", "xmlFile" },
                new string[] { "LoadOptions", "options" }
            }, visibility));


            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load",
                                                              new string[][] { new string[] { "TextReader", "textReader" } }, visibility));

            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", new string[][]
            {
                new string[] { "TextReader", "textReader" },
                new string[] { "LoadOptions", "options" }
            }, visibility));


            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load",
                                                              new string[][] { new string[] { "XmlReader", "xmlReader" } }, visibility));


            //Parse Methods
            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Parse",
                                                              new string[][] { new string[] { "System.String", "text" } }, visibility));

            xroot.Members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Parse", new string[][]
            {
                new string[] { "System.String", "text" },
                new string[] { "LoadOptions", "options" }
            }, visibility));


            //Save Methods
            xroot.Members.Add(
                CodeDomHelper.CreateXRootSave(new string[][] { new string[] { "System.String", "fileName" } }, visibility));
            xroot.Members.Add(CodeDomHelper.CreateXRootSave(new string[][]
                                                            { new string[] { "TextWriter", "textWriter" } }, visibility));
            xroot.Members.Add(CodeDomHelper.CreateXRootSave(new string[][] { new string[] { "XmlWriter", "writer" } }, visibility));

            xroot.Members.Add(CodeDomHelper.CreateXRootSave(new string[][]
            {
                new string[] { "TextWriter", "textWriter" },
                new string[] { "SaveOptions", "options" }
            }, visibility));
            xroot.Members.Add(CodeDomHelper.CreateXRootSave(new string[][]
            {
                new string[] { "System.String", "fileName" },
                new string[] { "SaveOptions", "options" }
            }, visibility));

            CodeMemberProperty docProp = CodeDomHelper.CreateProperty("XDocument",
                                                                      "XDocument",
                                                                      docField,
                                                                      visibility.ToMemberAttribute(),
                                                                      false);

            xroot.Members.Add(docProp);

            CodeMemberProperty rootProp = CodeDomHelper.CreateProperty("Root",
                                                                       "XTypedElement",
                                                                       rootField,
                                                                       visibility.ToMemberAttribute(),
                                                                       false);

            xroot.Members.Add(rootProp);

            for (int i = 0; i < elements.Count; i++)
            {
                string typeName   = elements[i].Name;
                string fqTypeName = (namespaces == null || namespaces[i].Name == String.Empty)
                    ? typeName
                    : "global::" + namespaces[i].Name + "." + typeName;

                xroot.Members.Add(CodeDomHelper.CreateXRootFunctionalConstructor(fqTypeName, visibility));
                xroot.Members.Add(CodeDomHelper.CreateXRootGetter(typeName, fqTypeName, lst, visibility));
            }

            codeNamespace.Types.Add(xroot);
        }
 private void CreateXRoot(CodeNamespace codeNamespace, string rootName, List <CodeTypeDeclaration> elements, List <CodeNamespace> namespaces)
 {
     if (codeNamespace != null)
     {
         LocalSymbolTable    lst       = new LocalSymbolTable(this.settings);
         CodeTypeDeclaration xroot     = CodeDomHelper.CreateTypeDeclaration(rootName, null);
         CodeMemberField     docField  = CodeDomHelper.CreateMemberField("doc", "XDocument", MemberAttributes.Private, false);
         CodeMemberField     rootField = CodeDomHelper.CreateMemberField("rootObject", "XTypedElement", MemberAttributes.Private, false);
         xroot.Members.Add(docField);
         xroot.Members.Add(rootField);
         lst.Init(rootName);
         lst.RegisterMember("doc");
         lst.RegisterMember("rootObject");
         lst.RegisterMember("Load");
         lst.RegisterMember("Parse");
         lst.RegisterMember("Save");
         lst.RegisterMember("XDocument");
         xroot.Members.Add(CodeDomHelper.CreateConstructor(MemberAttributes.Private));
         CodeTypeMemberCollection members = xroot.Members;
         string[][] strArrays             = new string[1][];
         string[]   strArrays1            = new string[] { "System.String", "xmlFile" };
         strArrays[0] = strArrays1;
         members.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection = xroot.Members;
         strArrays    = new string[2][];
         strArrays1   = new string[] { "System.String", "xmlFile" };
         strArrays[0] = strArrays1;
         strArrays1   = new string[] { "LoadOptions", "options" };
         strArrays[1] = strArrays1;
         codeTypeMemberCollection.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", strArrays));
         CodeTypeMemberCollection members1 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "TextReader", "textReader" };
         strArrays[0] = strArrays1;
         members1.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection1 = xroot.Members;
         strArrays    = new string[2][];
         strArrays1   = new string[] { "TextReader", "textReader" };
         strArrays[0] = strArrays1;
         strArrays1   = new string[] { "LoadOptions", "options" };
         strArrays[1] = strArrays1;
         codeTypeMemberCollection1.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", strArrays));
         CodeTypeMemberCollection members2 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "XmlReader", "xmlReader" };
         strArrays[0] = strArrays1;
         members2.Add(CodeDomHelper.CreateXRootMethod(rootName, "Load", strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection2 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "System.String", "text" };
         strArrays[0] = strArrays1;
         codeTypeMemberCollection2.Add(CodeDomHelper.CreateXRootMethod(rootName, "Parse", strArrays));
         CodeTypeMemberCollection members3 = xroot.Members;
         strArrays    = new string[2][];
         strArrays1   = new string[] { "System.String", "text" };
         strArrays[0] = strArrays1;
         strArrays1   = new string[] { "LoadOptions", "options" };
         strArrays[1] = strArrays1;
         members3.Add(CodeDomHelper.CreateXRootMethod(rootName, "Parse", strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection3 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "System.String", "fileName" };
         strArrays[0] = strArrays1;
         codeTypeMemberCollection3.Add(CodeDomHelper.CreateXRootSave(strArrays));
         CodeTypeMemberCollection members4 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "TextWriter", "textWriter" };
         strArrays[0] = strArrays1;
         members4.Add(CodeDomHelper.CreateXRootSave(strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection4 = xroot.Members;
         strArrays    = new string[1][];
         strArrays1   = new string[] { "XmlWriter", "writer" };
         strArrays[0] = strArrays1;
         codeTypeMemberCollection4.Add(CodeDomHelper.CreateXRootSave(strArrays));
         CodeTypeMemberCollection members5 = xroot.Members;
         strArrays    = new string[2][];
         strArrays1   = new string[] { "TextWriter", "textWriter" };
         strArrays[0] = strArrays1;
         strArrays1   = new string[] { "SaveOptions", "options" };
         strArrays[1] = strArrays1;
         members5.Add(CodeDomHelper.CreateXRootSave(strArrays));
         CodeTypeMemberCollection codeTypeMemberCollection5 = xroot.Members;
         strArrays    = new string[2][];
         strArrays1   = new string[] { "System.String", "fileName" };
         strArrays[0] = strArrays1;
         strArrays1   = new string[] { "SaveOptions", "options" };
         strArrays[1] = strArrays1;
         codeTypeMemberCollection5.Add(CodeDomHelper.CreateXRootSave(strArrays));
         CodeMemberProperty prop = CodeDomHelper.CreateProperty("XDocument", "XDocument", docField, MemberAttributes.Public, false);
         xroot.Members.Add(prop);
         for (int i = 0; i < elements.Count; i++)
         {
             string typeName   = elements[i].Name;
             string fqTypeName = (namespaces == null || namespaces[i].Name == string.Empty ? typeName : string.Concat("global::", namespaces[i].Name, ".", typeName));
             xroot.Members.Add(CodeDomHelper.CreateXRootFunctionalConstructor(fqTypeName));
             xroot.Members.Add(CodeDomHelper.CreateXRootGetter(typeName, fqTypeName, lst));
         }
         codeNamespace.Types.Add(xroot);
     }
 }