Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GenerateRefEmitAssembly()

static Assembly System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly ( XmlMapping[] xmlMappings,
Type[] types,
string defaultNamespace )
inlinestaticpackage

Definition at line 395 of file TempAssembly.cs.

396 {
398 foreach (XmlMapping xmlMapping in xmlMappings)
399 {
401 }
402 TypeScope[] array = new TypeScope[dictionary.Keys.Count];
403 dictionary.Keys.CopyTo(array, 0);
404 string name = "Microsoft.GeneratedCode";
405 AssemblyBuilder assemblyBuilder = CodeGenerator.CreateAssemblyBuilder(name);
406 if (types != null && types.Length != 0 && types[0] != null)
407 {
408 ConstructorInfo constructor = typeof(AssemblyVersionAttribute).GetConstructor(new Type[1] { typeof(string) });
409 string text = types[0].Assembly.GetName().Version.ToString();
410 assemblyBuilder.SetCustomAttribute(new CustomAttributeBuilder(constructor, new object[1] { text }));
411 }
412 CodeIdentifiers codeIdentifiers = new CodeIdentifiers();
413 codeIdentifiers.AddUnique("XmlSerializationWriter", "XmlSerializationWriter");
414 codeIdentifiers.AddUnique("XmlSerializationReader", "XmlSerializationReader");
415 string text2 = null;
416 if (types != null && types.Length == 1 && types[0] != null)
417 {
418 text2 = CodeIdentifier.MakeValid(types[0].Name);
419 if (types[0].IsArray)
420 {
421 text2 += "Array";
422 }
423 }
424 ModuleBuilder moduleBuilder = CodeGenerator.CreateModuleBuilder(assemblyBuilder, name);
425 string text3 = "XmlSerializationWriter" + text2;
426 text3 = codeIdentifiers.AddUnique(text3, text3);
427 XmlSerializationWriterILGen xmlSerializationWriterILGen = new XmlSerializationWriterILGen(array, "public", text3);
429 xmlSerializationWriterILGen.GenerateBegin();
430 string[] array2 = new string[xmlMappings.Length];
431 for (int j = 0; j < xmlMappings.Length; j++)
432 {
433 array2[j] = xmlSerializationWriterILGen.GenerateElement(xmlMappings[j]);
434 }
435 Type type = xmlSerializationWriterILGen.GenerateEnd();
436 string text4 = "XmlSerializationReader" + text2;
437 text4 = codeIdentifiers.AddUnique(text4, text4);
438 XmlSerializationReaderILGen xmlSerializationReaderILGen = new XmlSerializationReaderILGen(array, "public", text4);
440 xmlSerializationReaderILGen.CreatedTypes.Add(type.Name, type);
441 xmlSerializationReaderILGen.GenerateBegin();
442 string[] array3 = new string[xmlMappings.Length];
443 for (int k = 0; k < xmlMappings.Length; k++)
444 {
445 array3[k] = xmlSerializationReaderILGen.GenerateElement(xmlMappings[k]);
446 }
448 string baseSerializer = xmlSerializationReaderILGen.GenerateBaseSerializer("XmlSerializer1", text4, text3, codeIdentifiers);
450 for (int l = 0; l < xmlMappings.Length; l++)
451 {
453 {
455 }
456 }
457 xmlSerializationReaderILGen.GenerateSerializerContract("XmlSerializerContract", xmlMappings, types, text4, array3, text3, array2, dictionary2);
458 return type.Assembly;
459 }
void Add(TKey key, TValue value)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.array, System.Collections.Generic.Dictionary< TKey, TValue >.ContainsKey(), System.Xml.Serialization.CodeGenerator.CreateAssemblyBuilder(), System.Xml.Serialization.CodeGenerator.CreateModuleBuilder(), System.dictionary, System.Xml.Dictionary, System.Reflection.Emit.IsArray, System.Xml.Serialization.CodeIdentifier.MakeValid(), System.Xml.Name, System.text, and System.type.

Referenced by System.Xml.Serialization.TempAssembly.TempAssembly().