Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ GenerateTypedSerializer()

string System.Xml.Serialization.XmlSerializationCodeGen.GenerateTypedSerializer ( string readMethod,
string writeMethod,
XmlMapping mapping,
CodeIdentifiers classes,
string baseSerializer,
string readerClass,
string writerClass )
inlinepackageinherited

Definition at line 242 of file XmlSerializationCodeGen.cs.

243 {
244 string text = CodeIdentifier.MakeValid(Accessor.UnescapeName(mapping.Accessor.Mapping.TypeDesc.Name));
245 text = classes.AddUnique(text + "Serializer", mapping);
247 _writer.Write("public sealed class ");
248 _writer.Write(CodeIdentifier.GetCSharpName(text));
249 _writer.Write(" : ");
251 _writer.WriteLine(" {");
252 _writer.Indent++;
254 _writer.Write("public override ");
256 _writer.Write(" CanDeserialize(");
257 _writer.Write(typeof(XmlReader).FullName);
258 _writer.WriteLine(" xmlReader) {");
259 _writer.Indent++;
260 if (mapping.Accessor.Any)
261 {
262 _writer.WriteLine("return true;");
263 }
264 else
265 {
266 _writer.Write("return xmlReader.IsStartElement(");
267 WriteQuotedCSharpString(mapping.Accessor.Name);
268 _writer.Write(", ");
269 WriteQuotedCSharpString(mapping.Accessor.Namespace);
270 _writer.WriteLine(");");
271 }
272 _writer.Indent--;
273 _writer.WriteLine("}");
274 if (writeMethod != null)
275 {
277 _writer.Write("protected override void Serialize(object objectToSerialize, ");
278 _writer.Write(typeof(XmlSerializationWriter).FullName);
279 _writer.WriteLine(" writer) {");
280 _writer.Indent++;
281 _writer.Write("((");
283 _writer.Write(")writer).");
284 _writer.Write(writeMethod);
285 _writer.Write("(");
286 if (mapping is XmlMembersMapping)
287 {
288 _writer.Write("(object[])");
289 }
290 _writer.WriteLine("objectToSerialize);");
291 _writer.Indent--;
292 _writer.WriteLine("}");
293 }
294 if (readMethod != null)
295 {
297 _writer.Write("protected override object Deserialize(");
298 _writer.Write(typeof(XmlSerializationReader).FullName);
299 _writer.WriteLine(" reader) {");
300 _writer.Indent++;
301 _writer.Write("return ((");
303 _writer.Write(")reader).");
304 _writer.Write(readMethod);
305 _writer.WriteLine("();");
306 _writer.Indent--;
307 _writer.WriteLine("}");
308 }
309 _writer.Indent--;
310 _writer.WriteLine("}");
311 return text;
312 }

References System.Xml.Serialization.XmlSerializationCodeGen._writer, System.Xml.Dictionary, System.FullName, System.Xml.Serialization.CodeIdentifier.GetCSharpName(), System.Xml.Serialization.IndentedWriter.Indent, System.Xml.Serialization.CodeIdentifier.MakeValid(), System.text, System.Xml.Serialization.Accessor.UnescapeName(), System.Xml.Serialization.IndentedWriter.Write(), System.Xml.Serialization.IndentedWriter.WriteLine(), and System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString().