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("}"); }
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);"); }
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("}"); }
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("}"); }