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

◆ GenerateSerializerToStream()

static bool System.Xml.Serialization.TempAssembly.GenerateSerializerToStream ( XmlMapping[] xmlMappings,
Type[] types,
string defaultNamespace,
Assembly assembly,
Hashtable assemblies,
Stream stream )
inlinestaticpackage

Definition at line 272 of file TempAssembly.cs.

273 {
274 Compiler compiler = new Compiler();
275 try
276 {
277 Hashtable hashtable = new Hashtable();
278 foreach (XmlMapping xmlMapping in xmlMappings)
279 {
280 hashtable[xmlMapping.Scope] = xmlMapping;
281 }
282 TypeScope[] array = new TypeScope[hashtable.Keys.Count];
283 hashtable.Keys.CopyTo(array, 0);
285 Hashtable types2 = new Hashtable();
286 TypeScope[] array2 = array;
287 foreach (TypeScope typeScope in array2)
288 {
289 foreach (Type type3 in typeScope.Types)
290 {
291 compiler.AddImport(type3, types2);
292 Assembly assembly2 = type3.Assembly;
293 string fullName = assembly2.FullName;
294 if (assemblies[fullName] == null)
295 {
297 }
298 }
299 }
300 for (int k = 0; k < types.Length; k++)
301 {
302 compiler.AddImport(types[k], types2);
303 }
304 compiler.AddImport(typeof(object).Assembly);
305 compiler.AddImport(typeof(XmlSerializer).Assembly);
306 IndentedWriter indentedWriter = new IndentedWriter(compiler.Source, compact: false);
307 indentedWriter.WriteLine("[assembly:System.Security.AllowPartiallyTrustedCallers()]");
308 indentedWriter.WriteLine("[assembly:System.Security.SecurityTransparent()]");
309 indentedWriter.WriteLine("[assembly:System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]");
310 if (assembly != null && types.Length != 0)
311 {
312 for (int l = 0; l < types.Length; l++)
313 {
314 Type type2 = types[l];
315 if (!(type2 == null) && DynamicAssemblies.IsTypeDynamic(type2))
316 {
318 }
319 }
320 indentedWriter.Write("[assembly:");
321 indentedWriter.Write(typeof(XmlSerializerVersionAttribute).FullName);
322 indentedWriter.Write("(");
323 indentedWriter.Write("ParentAssemblyId=");
324 ReflectionAwareCodeGen.WriteQuotedCSharpString(indentedWriter, GenerateAssemblyId(types[0]));
325 indentedWriter.Write(", Version=");
326 ReflectionAwareCodeGen.WriteQuotedCSharpString(indentedWriter, "1.0.0.0");
327 if (defaultNamespace != null)
328 {
329 indentedWriter.Write(", Namespace=");
330 ReflectionAwareCodeGen.WriteQuotedCSharpString(indentedWriter, defaultNamespace);
331 }
332 indentedWriter.WriteLine(")]");
333 }
334 CodeIdentifiers codeIdentifiers = new CodeIdentifiers();
335 codeIdentifiers.AddUnique("XmlSerializationWriter", "XmlSerializationWriter");
336 codeIdentifiers.AddUnique("XmlSerializationReader", "XmlSerializationReader");
337 string text = null;
338 if (types != null && types.Length == 1 && types[0] != null)
339 {
340 text = CodeIdentifier.MakeValid(types[0].Name);
341 if (types[0].IsArray)
342 {
343 text += "Array";
344 }
345 }
346 indentedWriter.WriteLine("namespace Microsoft.Xml.Serialization.GeneratedAssembly {");
347 indentedWriter.Indent++;
348 indentedWriter.WriteLine();
349 string text2 = "XmlSerializationWriter" + text;
350 text2 = codeIdentifiers.AddUnique(text2, text2);
351 XmlSerializationWriterCodeGen xmlSerializationWriterCodeGen = new XmlSerializationWriterCodeGen(indentedWriter, array, "public", text2);
352 xmlSerializationWriterCodeGen.GenerateBegin();
353 string[] array3 = new string[xmlMappings.Length];
354 for (int m = 0; m < xmlMappings.Length; m++)
355 {
357 }
358 xmlSerializationWriterCodeGen.GenerateEnd();
359 indentedWriter.WriteLine();
360 string text3 = "XmlSerializationReader" + text;
361 text3 = codeIdentifiers.AddUnique(text3, text3);
362 XmlSerializationReaderCodeGen xmlSerializationReaderCodeGen = new XmlSerializationReaderCodeGen(indentedWriter, array, "public", text3);
363 xmlSerializationReaderCodeGen.GenerateBegin();
364 string[] array4 = new string[xmlMappings.Length];
365 for (int n = 0; n < xmlMappings.Length; n++)
366 {
368 }
370 string baseSerializer = xmlSerializationReaderCodeGen.GenerateBaseSerializer("XmlSerializer1", text3, text2, codeIdentifiers);
372 for (int num = 0; num < xmlMappings.Length; num++)
373 {
374 if (hashtable2[xmlMappings[num].Key] == null)
375 {
377 }
378 }
379 xmlSerializationReaderCodeGen.GenerateSerializerContract("XmlSerializerContract", xmlMappings, types, text3, array4, text2, array3, hashtable2);
380 indentedWriter.Indent--;
381 indentedWriter.WriteLine("}");
382 string s = compiler.Source.ToString();
384 stream.Write(bytes, 0, bytes.Length);
385 stream.Flush();
386 return true;
387 }
388 finally
389 {
390 compiler.Close();
391 }
392 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)
virtual ICollection Keys
Definition Hashtable.cs:532
static string XmlPregenTypeDynamic
Definition SR.cs:2142
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
static string GenerateAssemblyId(Type type)

References System.array, System.bytes, System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), System.Xml.Dictionary, System.SR.Format(), System.FullName, System.Xml.Serialization.TempAssembly.GenerateAssemblyId(), System.Reflection.Emit.IsArray, System.Xml.Serialization.DynamicAssemblies.IsTypeDynamic(), System.Xml.Serialization.CodeIdentifier.MakeValid(), System.Xml.Name, System.s, System.stream, System.text, System.Xml.Serialization.ReflectionAwareCodeGen.WriteQuotedCSharpString(), and System.SR.XmlPregenTypeDynamic.

Referenced by System.Xml.Serialization.XmlSerializer.GenerateSerializer().