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

◆ ExportGenericInfo()

XmlElement System.Runtime.Serialization.SchemaExporter.ExportGenericInfo ( Type clrType,
string elementName,
string elementNs )
inlineprivate

Definition at line 447 of file SchemaExporter.cs.

448 {
449 int num = 0;
451 while (CollectionDataContract.IsCollection(clrType, out itemType) && DataContract.GetBuiltInDataContract(clrType) == null && !CollectionDataContract.IsCollectionDataContract(clrType))
452 {
454 num++;
455 }
456 Type[] array = null;
457 IList<int> list = null;
458 if (clrType.IsGenericType)
459 {
460 array = clrType.GetGenericArguments();
461 string text;
462 if (clrType.DeclaringType == null)
463 {
464 text = clrType.Name;
465 }
466 else
467 {
468 int num2 = ((clrType.Namespace != null) ? clrType.Namespace.Length : 0);
469 if (num2 > 0)
470 {
471 num2++;
472 }
473 text = DataContract.GetClrTypeFullName(clrType).Substring(num2).Replace('+', '.');
474 }
475 int num3 = text.IndexOf('[');
476 if (num3 >= 0)
477 {
478 text = text.Substring(0, num3);
479 }
480 list = DataContract.GetDataContractNameForGenericName(text, null);
481 clrType = clrType.GetGenericTypeDefinition();
482 }
483 XmlQualifiedName xmlQualifiedName = DataContract.GetStableName(clrType);
484 if (num > 0)
485 {
486 string text2 = xmlQualifiedName.Name;
487 for (int i = 0; i < num; i++)
488 {
489 text2 = "ArrayOf" + text2;
490 }
491 xmlQualifiedName = new XmlQualifiedName(text2, DataContract.GetCollectionNamespace(xmlQualifiedName.Namespace));
492 }
496 xmlElement.Attributes.Append(xmlAttribute);
499 xmlElement.Attributes.Append(xmlAttribute2);
500 if (array != null)
501 {
502 int num4 = 0;
503 int num5 = 0;
504 foreach (int item in list)
505 {
506 int num6 = 0;
507 while (num6 < item)
508 {
509 XmlElement xmlElement2 = ExportGenericInfo(array[num4], "GenericParameter", "http://schemas.microsoft.com/2003/10/Serialization/");
510 if (num5 > 0)
511 {
514 xmlElement2.Attributes.Append(xmlAttribute3);
515 }
516 xmlElement.AppendChild(xmlElement2);
517 num6++;
518 num4++;
519 }
520 num5++;
521 }
522 if (list[num5 - 1] == 0)
523 {
526 xmlElement.Attributes.Append(xmlAttribute4);
527 }
528 }
529 return xmlElement;
530 }
static CultureInfo InvariantCulture
XmlElement ExportGenericInfo(Type clrType, string elementName, string elementNs)
static ? string DecodeName(string? name)
Definition XmlConvert.cs:55
XmlElement CreateElement(string name)
XmlAttribute CreateAttribute(string name)

References System.array, System.Xml.XmlDocument.CreateAttribute(), System.Xml.XmlDocument.CreateElement(), System.Xml.XmlConvert.DecodeName(), System.Runtime.Serialization.Dictionary, System.Runtime.Serialization.SchemaExporter.ExportGenericInfo(), System.Runtime.Serialization.DataContract.GetBuiltInDataContract(), System.Runtime.Serialization.DataContract.GetClrTypeFullName(), System.Runtime.Serialization.DataContract.GetCollectionNamespace(), System.Runtime.Serialization.DataContract.GetDataContractNameForGenericName(), System.Runtime.Serialization.DataContract.GetStableName(), System.Globalization.CultureInfo.InvariantCulture, System.Runtime.Serialization.CollectionDataContract.IsCollection(), System.Runtime.Serialization.CollectionDataContract.IsCollectionDataContract(), System.item, System.list, System.text, and System.Runtime.Serialization.SchemaExporter.XmlDoc.

Referenced by System.Runtime.Serialization.SchemaExporter.ExportClassDataContract(), System.Runtime.Serialization.SchemaExporter.ExportCollectionDataContract(), System.Runtime.Serialization.SchemaExporter.ExportGenericInfo(), and System.Runtime.Serialization.SchemaExporter.ExportISerializableDataContract().