コード例 #1
0
        void WriteCreateCollectionMethod(CreateCollectionInfo c) {
            Writer.Write("void ");
            Writer.Write(c.Name);
            Writer.WriteLine("(object collection, object collectionItems) {");
            Writer.Indent++;

            Writer.WriteLine("if (collectionItems == null) return;");
            Writer.WriteLine("if (collection == null) return;");

            TypeDesc td = c.TypeDesc;
            bool useReflection = td.UseReflection;
            string fullTypeName = td.CSharpName;
            WriteLocalDecl(fullTypeName, "c", "collection", useReflection);

            WriteCreateCollection(td, "collectionItems");

            Writer.Indent--;
            Writer.WriteLine("}");
        }
コード例 #2
0
        void WriteAddCollectionFixup(TypeDesc typeDesc, bool readOnly, string memberSource, string targetSource) {
            Writer.WriteLine("// get array of the collection items");
            bool useReflection = typeDesc.UseReflection;
            CreateCollectionInfo create = (CreateCollectionInfo)createMethods[typeDesc];
            if (create == null) {
                string createName = "create" + (++nextCreateMethodNumber).ToString(CultureInfo.InvariantCulture) + "_" + typeDesc.Name;
                create = new CreateCollectionInfo(createName, typeDesc);
                createMethods.Add(typeDesc, create);
            }

            Writer.Write("if ((object)(");
            Writer.Write(memberSource);
            Writer.WriteLine(") == null) {");
            Writer.Indent++;

            if (readOnly) {
                Writer.Write("throw CreateReadOnlyCollectionException(");
                WriteQuotedCSharpString(typeDesc.CSharpName);
                Writer.WriteLine(");");
            }
            else {
                Writer.Write(memberSource);
                Writer.Write(" = ");
                Writer.Write(RaCodeGen.GetStringForCreateInstance(typeDesc.CSharpName, typeDesc.UseReflection, typeDesc.CannotNew, true));
                Writer.WriteLine(";");
            }

            Writer.Indent--;
            Writer.WriteLine("}");
        
            Writer.Write("CollectionFixup collectionFixup = new CollectionFixup(");
            Writer.Write(memberSource);
            Writer.Write(", ");
            Writer.Write("new ");
            Writer.Write(typeof(XmlSerializationCollectionFixupCallback).FullName);
            Writer.Write("(this.");
            Writer.Write(create.Name);
            Writer.Write("), ");
            Writer.Write(targetSource);
            Writer.WriteLine(");");
            Writer.WriteLine("AddFixup(collectionFixup);");
        }
コード例 #3
0
        void WriteCreateCollectionMethod(CreateCollectionInfo c) {
            writer.Write("void ");
            writer.Write(c.Name);
            writer.WriteLine("(object collection, object collectionItems) {");
            writer.Indent++;

            writer.WriteLine("if (collectionItems == null) return;");
            writer.WriteLine("if (collection == null) return;");

            TypeDesc td = c.TypeDesc;
            string fullTypeName = CodeIdentifier.EscapeKeywords(td.FullName);

            writer.Write(fullTypeName);
            writer.Write(" c = (");
            writer.Write(fullTypeName);
            writer.WriteLine(")collection;");

            WriteCreateCollection(td, "collectionItems");

            writer.Indent--;
            writer.WriteLine("}");
        }
コード例 #4
0
        void WriteAddCollectionFixup(TypeDesc typeDesc, bool readOnly, string memberSource, string targetSource) {
            writer.WriteLine("// get array of the collection items");
            CreateCollectionInfo create = (CreateCollectionInfo)createMethods[typeDesc];
            if (create == null) {
                string createName = "create" + (++nextCreateMethodNumber).ToString() + "_" + typeDesc.Name;
                create = new CreateCollectionInfo(createName, typeDesc);
                createMethods.Add(typeDesc, create);
            }

            writer.Write("if ((object)(");
            writer.Write(memberSource);
            writer.WriteLine(") == null) {");
            writer.Indent++;

            if (readOnly) {
                writer.Write("throw CreateReadOnlyCollectionException(");
                WriteQuotedCSharpString(typeDesc.FullName);
                writer.WriteLine(");");
            }
            else {
                writer.Write(memberSource);
                writer.Write(" = new ");
                writer.Write(CodeIdentifier.EscapeKeywords(typeDesc.FullName));
                writer.WriteLine("();");
            }

            writer.Indent--;
            writer.WriteLine("}");
        
            writer.Write("CollectionFixup collectionFixup = new CollectionFixup(");
            writer.Write(memberSource);
            writer.Write(", ");
            writer.Write("new ");
            writer.Write(typeof(XmlSerializationCollectionFixupCallback).FullName);
            writer.Write("(this.");
            writer.Write(create.Name);
            writer.Write("), ");
            writer.Write(targetSource);
            writer.WriteLine(");");
            writer.WriteLine("AddFixup(collectionFixup);");
        }
 private void WriteAddCollectionFixup(TypeDesc typeDesc, bool readOnly, string memberSource, string targetSource)
 {
     base.Writer.WriteLine("// get array of the collection items");
     bool useReflection = typeDesc.UseReflection;
     CreateCollectionInfo info = (CreateCollectionInfo) this.createMethods[typeDesc];
     if (info == null)
     {
         int num2 = ++this.nextCreateMethodNumber;
         info = new CreateCollectionInfo("create" + num2.ToString(CultureInfo.InvariantCulture) + "_" + typeDesc.Name, typeDesc);
         this.createMethods.Add(typeDesc, info);
     }
     base.Writer.Write("if ((object)(");
     base.Writer.Write(memberSource);
     base.Writer.WriteLine(") == null) {");
     IndentedWriter writer = base.Writer;
     writer.Indent++;
     if (readOnly)
     {
         base.Writer.Write("throw CreateReadOnlyCollectionException(");
         base.WriteQuotedCSharpString(typeDesc.CSharpName);
         base.Writer.WriteLine(");");
     }
     else
     {
         base.Writer.Write(memberSource);
         base.Writer.Write(" = ");
         base.Writer.Write(base.RaCodeGen.GetStringForCreateInstance(typeDesc.CSharpName, typeDesc.UseReflection, typeDesc.CannotNew, true));
         base.Writer.WriteLine(";");
     }
     IndentedWriter writer2 = base.Writer;
     writer2.Indent--;
     base.Writer.WriteLine("}");
     base.Writer.Write("CollectionFixup collectionFixup = new CollectionFixup(");
     base.Writer.Write(memberSource);
     base.Writer.Write(", ");
     base.Writer.Write("new ");
     base.Writer.Write(typeof(XmlSerializationCollectionFixupCallback).FullName);
     base.Writer.Write("(this.");
     base.Writer.Write(info.Name);
     base.Writer.Write("), ");
     base.Writer.Write(targetSource);
     base.Writer.WriteLine(");");
     base.Writer.WriteLine("AddFixup(collectionFixup);");
 }
 private void WriteCreateCollectionMethod(CreateCollectionInfo c)
 {
     base.Writer.Write("void ");
     base.Writer.Write(c.Name);
     base.Writer.WriteLine("(object collection, object collectionItems) {");
     IndentedWriter writer = base.Writer;
     writer.Indent++;
     base.Writer.WriteLine("if (collectionItems == null) return;");
     base.Writer.WriteLine("if (collection == null) return;");
     TypeDesc typeDesc = c.TypeDesc;
     bool useReflection = typeDesc.UseReflection;
     string cSharpName = typeDesc.CSharpName;
     this.WriteLocalDecl(cSharpName, "c", "collection", useReflection);
     this.WriteCreateCollection(typeDesc, "collectionItems");
     IndentedWriter writer2 = base.Writer;
     writer2.Indent--;
     base.Writer.WriteLine("}");
 }