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

◆ FindChoiceEnumValue()

string System.Xml.Serialization.XmlSerializationWriterCodeGen.FindChoiceEnumValue ( ElementAccessor element,
EnumMapping choiceMapping,
bool useReflection )
inlineprivate

Definition at line 2184 of file XmlSerializationWriterCodeGen.cs.

2185 {
2186 string text = null;
2187 for (int i = 0; i < choiceMapping.Constants.Length; i++)
2188 {
2189 string xmlName = choiceMapping.Constants[i].XmlName;
2190 if (element.Any && element.Name.Length == 0)
2191 {
2192 if (xmlName == "##any:")
2193 {
2194 text = ((!useReflection) ? choiceMapping.Constants[i].Name : choiceMapping.Constants[i].Value.ToString(CultureInfo.InvariantCulture));
2195 break;
2196 }
2197 continue;
2198 }
2199 int num = xmlName.LastIndexOf(':');
2200 ReadOnlySpan<char> span = ((num < 0) ? ((ReadOnlySpan<char>)choiceMapping.Namespace) : xmlName.AsSpan(0, num));
2201 ReadOnlySpan<char> span2 = ((num < 0) ? ((ReadOnlySpan<char>)xmlName) : xmlName.AsSpan(num + 1));
2202 if (span2.SequenceEqual(element.Name) && ((element.Form == XmlSchemaForm.Unqualified && span.IsEmpty) || span.SequenceEqual(element.Namespace)))
2203 {
2204 text = ((!useReflection) ? choiceMapping.Constants[i].Name : choiceMapping.Constants[i].Value.ToString(CultureInfo.InvariantCulture));
2205 break;
2206 }
2207 }
2208 if (text == null || text.Length == 0)
2209 {
2210 if (element.Any && element.Name.Length == 0)
2211 {
2213 }
2214 throw new InvalidOperationException(System.SR.Format(System.SR.XmlChoiceMissingValue, choiceMapping.TypeDesc.FullName, element.Namespace + ":" + element.Name, element.Name, element.Namespace));
2215 }
2216 if (!useReflection)
2217 {
2218 CodeIdentifier.CheckValidIdentifier(text);
2219 }
2220 return text;
2221 }
static string XmlChoiceMissingAnyValue
Definition SR.cs:1656
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlChoiceMissingValue
Definition SR.cs:1654
Definition SR.cs:7

References System.Xml.Serialization.Accessor.Any, System.Xml.Serialization.CodeIdentifier.CheckValidIdentifier(), System.Xml.Dictionary, System.SR.Format(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.Accessor.Name, System.Xml.Serialization.Accessor.Namespace, System.text, System.SR.XmlChoiceMissingAnyValue, and System.SR.XmlChoiceMissingValue.

Referenced by System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteElements().