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

◆ ChangeType() [8/9]

override object System.Xml.Schema.XmlMiscConverter.ChangeType ( object value,
Type destinationType,
IXmlNamespaceResolver nsResolver )
inline

Definition at line 128 of file XmlMiscConverter.cs.

129 {
130 if (value == null)
131 {
132 throw new ArgumentNullException("value");
133 }
134 if (destinationType == null)
135 {
136 throw new ArgumentNullException("destinationType");
137 }
138 Type type = value.GetType();
139 if (destinationType == XmlBaseConverter.ObjectType)
140 {
141 destinationType = base.DefaultClrType;
142 }
143 if (destinationType == XmlBaseConverter.ByteArrayType)
144 {
145 if (type == XmlBaseConverter.ByteArrayType)
146 {
147 switch (base.TypeCode)
148 {
149 case XmlTypeCode.Base64Binary:
150 return (byte[])value;
151 case XmlTypeCode.HexBinary:
152 return (byte[])value;
153 }
154 }
155 if (type == XmlBaseConverter.StringType)
156 {
157 switch (base.TypeCode)
158 {
159 case XmlTypeCode.Base64Binary:
160 return XmlBaseConverter.StringToBase64Binary((string)value);
161 case XmlTypeCode.HexBinary:
162 return XmlBaseConverter.StringToHexBinary((string)value);
163 }
164 }
165 }
166 if (destinationType == XmlBaseConverter.XmlQualifiedNameType)
167 {
168 if (type == XmlBaseConverter.StringType)
169 {
170 switch (base.TypeCode)
171 {
172 case XmlTypeCode.Notation:
173 return XmlBaseConverter.StringToQName((string)value, nsResolver);
174 case XmlTypeCode.QName:
175 return XmlBaseConverter.StringToQName((string)value, nsResolver);
176 }
177 }
178 if (XmlBaseConverter.IsDerivedFrom(type, XmlBaseConverter.XmlQualifiedNameType))
179 {
180 switch (base.TypeCode)
181 {
182 case XmlTypeCode.Notation:
183 return (XmlQualifiedName)value;
184 case XmlTypeCode.QName:
185 return (XmlQualifiedName)value;
186 }
187 }
188 }
189 if (destinationType == XmlBaseConverter.StringType)
190 {
191 return ToString(value, nsResolver);
192 }
193 if (destinationType == XmlBaseConverter.TimeSpanType)
194 {
195 if (type == XmlBaseConverter.StringType)
196 {
197 switch (base.TypeCode)
198 {
199 case XmlTypeCode.DayTimeDuration:
200 return XmlBaseConverter.StringToDayTimeDuration((string)value);
201 case XmlTypeCode.Duration:
202 return XmlBaseConverter.StringToDuration((string)value);
203 case XmlTypeCode.YearMonthDuration:
204 return XmlBaseConverter.StringToYearMonthDuration((string)value);
205 }
206 }
207 if (type == XmlBaseConverter.TimeSpanType)
208 {
209 switch (base.TypeCode)
210 {
211 case XmlTypeCode.DayTimeDuration:
212 return (TimeSpan)value;
213 case XmlTypeCode.Duration:
214 return (TimeSpan)value;
215 case XmlTypeCode.YearMonthDuration:
216 return (TimeSpan)value;
217 }
218 }
219 }
220 if (destinationType == XmlBaseConverter.UriType)
221 {
222 if (type == XmlBaseConverter.StringType && base.TypeCode == XmlTypeCode.AnyUri)
223 {
224 return XmlConvert.ToUri((string)value);
225 }
226 if (XmlBaseConverter.IsDerivedFrom(type, XmlBaseConverter.UriType) && base.TypeCode == XmlTypeCode.AnyUri)
227 {
228 return (Uri)value;
229 }
230 }
231 if (destinationType == XmlBaseConverter.XmlAtomicValueType)
232 {
233 if (type == XmlBaseConverter.ByteArrayType)
234 {
235 switch (base.TypeCode)
236 {
237 case XmlTypeCode.Base64Binary:
238 return new XmlAtomicValue(base.SchemaType, value);
239 case XmlTypeCode.HexBinary:
240 return new XmlAtomicValue(base.SchemaType, value);
241 }
242 }
243 if (type == XmlBaseConverter.StringType)
244 {
245 return new XmlAtomicValue(base.SchemaType, (string)value, nsResolver);
246 }
247 if (type == XmlBaseConverter.TimeSpanType)
248 {
249 switch (base.TypeCode)
250 {
251 case XmlTypeCode.DayTimeDuration:
252 return new XmlAtomicValue(base.SchemaType, value);
253 case XmlTypeCode.Duration:
254 return new XmlAtomicValue(base.SchemaType, value);
255 case XmlTypeCode.YearMonthDuration:
256 return new XmlAtomicValue(base.SchemaType, value);
257 }
258 }
259 if (XmlBaseConverter.IsDerivedFrom(type, XmlBaseConverter.UriType) && base.TypeCode == XmlTypeCode.AnyUri)
260 {
261 return new XmlAtomicValue(base.SchemaType, value);
262 }
263 if (type == XmlBaseConverter.XmlAtomicValueType)
264 {
265 return (XmlAtomicValue)value;
266 }
267 if (XmlBaseConverter.IsDerivedFrom(type, XmlBaseConverter.XmlQualifiedNameType))
268 {
269 switch (base.TypeCode)
270 {
271 case XmlTypeCode.Notation:
272 return new XmlAtomicValue(base.SchemaType, value, nsResolver);
273 case XmlTypeCode.QName:
274 return new XmlAtomicValue(base.SchemaType, value, nsResolver);
275 }
276 }
277 }
278 if (destinationType == XmlBaseConverter.XPathItemType && type == XmlBaseConverter.XmlAtomicValueType)
279 {
280 return (XmlAtomicValue)value;
281 }
282 if (destinationType == XmlBaseConverter.XPathItemType)
283 {
284 return (XPathItem)ChangeType(value, XmlBaseConverter.XmlAtomicValueType, nsResolver);
285 }
286 if (type == XmlBaseConverter.XmlAtomicValueType)
287 {
288 return ((XmlAtomicValue)value).ValueAs(destinationType, nsResolver);
289 }
291 }
virtual object ChangeListType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
XmlBaseConverter(XmlSchemaType schemaType)
override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver nsResolver)

References System.Xml.Schema.XmlBaseConverter.ByteArrayType, System.Xml.Schema.XmlBaseConverter.ChangeListType(), System.Xml.Schema.XmlMiscConverter.ChangeType(), System.Xml.Dictionary, System.Type.GetType(), System.Xml.Schema.XmlBaseConverter.IsDerivedFrom(), System.Xml.Schema.XmlBaseConverter.ObjectType, System.Xml.Schema.XmlBaseConverter.StringToBase64Binary(), System.Xml.Schema.XmlBaseConverter.StringToDayTimeDuration(), System.Xml.Schema.XmlBaseConverter.StringToDuration(), System.Xml.Schema.XmlBaseConverter.StringToHexBinary(), System.Xml.Schema.XmlBaseConverter.StringToQName(), System.Xml.Schema.XmlBaseConverter.StringToYearMonthDuration(), System.Xml.Schema.XmlBaseConverter.StringType, System.Xml.Schema.XmlBaseConverter.TimeSpanType, System.ToString, System.Xml.XmlConvert.ToUri(), System.type, System.Xml.Schema.XmlBaseConverter.UriType, System.value, System.Xml.Schema.XmlBaseConverter.XmlAtomicValueType, System.Xml.Schema.XmlBaseConverter.XmlQualifiedNameType, and System.Xml.Schema.XmlBaseConverter.XPathItemType.