Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlUnionConverter.cs
Go to the documentation of this file.
1namespace System.Xml.Schema;
2
3internal sealed class XmlUnionConverter : XmlBaseConverter
4{
5 private readonly XmlValueConverter[] _converters;
6
7 private readonly bool _hasAtomicMember;
8
9 private readonly bool _hasListMember;
10
11 private XmlUnionConverter(XmlSchemaType schemaType)
12 : base(schemaType)
13 {
14 while (schemaType.DerivedBy == XmlSchemaDerivationMethod.Restriction)
15 {
16 schemaType = schemaType.BaseXmlSchemaType;
17 }
18 XmlSchemaSimpleType[] baseMemberTypes = ((XmlSchemaSimpleTypeUnion)((XmlSchemaSimpleType)schemaType).Content).BaseMemberTypes;
20 for (int i = 0; i < baseMemberTypes.Length; i++)
21 {
22 _converters[i] = baseMemberTypes[i].ValueConverter;
23 if (baseMemberTypes[i].Datatype.Variety == XmlSchemaDatatypeVariety.List)
24 {
25 _hasListMember = true;
26 }
27 else if (baseMemberTypes[i].Datatype.Variety == XmlSchemaDatatypeVariety.Atomic)
28 {
29 _hasAtomicMember = true;
30 }
31 }
32 }
33
34 public static XmlValueConverter Create(XmlSchemaType schemaType)
35 {
36 return new XmlUnionConverter(schemaType);
37 }
38
40 {
41 if (value == null)
42 {
43 throw new ArgumentNullException("value");
44 }
45 if (destinationType == null)
46 {
47 throw new ArgumentNullException("destinationType");
48 }
51 {
53 }
55 {
57 }
59 {
61 {
62 return value;
63 }
64 XsdSimpleValue xsdSimpleValue = (XsdSimpleValue)base.SchemaType.Datatype.ParseValue((string)value, new NameTable(), nsResolver, createAtomicValue: true);
66 }
68 }
69}
static ? Type GetType(string typeName, bool throwOnError, bool ignoreCase)
Definition Type.cs:408
static readonly XmlValueConverter ItemList
static readonly Type XmlAtomicValueType
static readonly Type XmlAtomicValueArrayType
Exception CreateInvalidClrMappingException(Type sourceType, Type destinationType)
XmlSchemaDerivationMethod DerivedBy
static XmlValueConverter Create(XmlSchemaType schemaType)
override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
readonly XmlValueConverter[] _converters
XmlUnionConverter(XmlSchemaType schemaType)
object ChangeType(bool value, Type destinationType)