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

◆ ImportTypeMapping() [4/4]

TypeMapping System.Xml.Serialization.SoapReflectionImporter.ImportTypeMapping ( TypeModel model,
string dataType,
RecursionLimiter limiter )
inlineprivate

Definition at line 172 of file SoapReflectionImporter.cs.

173 {
174 if (dataType.Length > 0)
175 {
176 if (!model.TypeDesc.IsPrimitive)
177 {
178 throw new InvalidOperationException(System.SR.Format(System.SR.XmlInvalidDataTypeUsage, dataType, "SoapElementAttribute.DataType"));
179 }
180 TypeDesc typeDesc = _typeScope.GetTypeDesc(dataType, "http://www.w3.org/2001/XMLSchema");
181 if (typeDesc == null)
182 {
183 throw new InvalidOperationException(System.SR.Format(System.SR.XmlInvalidXsdDataType, dataType, "SoapElementAttribute.DataType", new XmlQualifiedName(dataType, "http://www.w3.org/2001/XMLSchema").ToString()));
184 }
185 if (model.TypeDesc.FullName != typeDesc.FullName)
186 {
187 throw new InvalidOperationException(System.SR.Format(System.SR.XmlDataTypeMismatch, dataType, "SoapElementAttribute.DataType", model.TypeDesc.FullName));
188 }
189 }
190 SoapAttributes attributes = GetAttributes(model.Type);
191 if (((uint)attributes.GetSoapFlags() & 0xFFFFFFFDu) != 0)
192 {
194 }
195 switch (model.TypeDesc.Kind)
196 {
197 case TypeKind.Enum:
198 return ImportEnumMapping((EnumModel)model);
199 case TypeKind.Primitive:
200 return ImportPrimitiveMapping((PrimitiveModel)model, dataType);
201 case TypeKind.Array:
202 case TypeKind.Collection:
203 case TypeKind.Enumerable:
204 return ImportArrayLikeMapping((ArrayModel)model, limiter);
205 case TypeKind.Root:
206 case TypeKind.Struct:
207 case TypeKind.Class:
208 if (model.TypeDesc.IsOptionalValue)
209 {
210 TypeDesc baseTypeDesc = model.TypeDesc.BaseTypeDesc;
211 SoapAttributes attributes2 = GetAttributes(baseTypeDesc.Type);
212 string ns = _defaultNs;
213 if (attributes2.SoapType != null && attributes2.SoapType.Namespace != null)
214 {
215 ns = attributes2.SoapType.Namespace;
216 }
217 TypeDesc typeDesc2 = (string.IsNullOrEmpty(dataType) ? model.TypeDesc.BaseTypeDesc : _typeScope.GetTypeDesc(dataType, "http://www.w3.org/2001/XMLSchema"));
218 string typeName = (string.IsNullOrEmpty(dataType) ? model.TypeDesc.BaseTypeDesc.Name : dataType);
219 TypeMapping typeMapping = GetTypeMapping(typeName, ns, typeDesc2);
220 if (typeMapping == null)
221 {
223 }
224 return CreateNullableMapping(typeMapping, model.TypeDesc.Type);
225 }
226 return ImportStructLikeMapping((StructModel)model, limiter);
227 default:
228 throw new NotSupportedException(System.SR.Format(System.SR.XmlUnsupportedSoapTypeKind, model.TypeDesc.FullName));
229 }
230 }
static string XmlInvalidTypeAttributes
Definition SR.cs:1572
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlUnsupportedSoapTypeKind
Definition SR.cs:1400
static string XmlInvalidXsdDataType
Definition SR.cs:1444
static string XmlDataTypeMismatch
Definition SR.cs:1446
static string XmlInvalidDataTypeUsage
Definition SR.cs:1442
Definition SR.cs:7
TypeModel GetTypeModel(Type type)
Definition ModelScope.cs:22
StructMapping ImportStructLikeMapping(StructModel model, RecursionLimiter limiter)
TypeMapping GetTypeMapping(string typeName, string ns, TypeDesc typeDesc)
NullableMapping CreateNullableMapping(TypeMapping baseMapping, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type)
ArrayMapping ImportArrayLikeMapping(ArrayModel model, RecursionLimiter limiter)
PrimitiveMapping ImportPrimitiveMapping(PrimitiveModel model, string dataType)
TypeDesc GetTypeDesc(string name, string ns)
Definition TypeScope.cs:224

References System.Xml.Serialization.SoapReflectionImporter._defaultNs, System.Xml.Serialization.SoapReflectionImporter._modelScope, System.Xml.Serialization.SoapReflectionImporter._typeScope, System.Xml.Serialization.SoapReflectionImporter.CreateNullableMapping(), System.Xml.Dictionary, System.SR.Format(), System.Xml.Serialization.SoapReflectionImporter.GetAttributes(), System.Xml.Serialization.SoapAttributes.GetSoapFlags(), System.Xml.Serialization.TypeScope.GetTypeDesc(), System.Xml.Serialization.SoapReflectionImporter.GetTypeMapping(), System.Xml.Serialization.ModelScope.GetTypeModel(), System.Xml.Serialization.SoapReflectionImporter.ImportArrayLikeMapping(), System.Xml.Serialization.SoapReflectionImporter.ImportEnumMapping(), System.Xml.Serialization.SoapReflectionImporter.ImportPrimitiveMapping(), System.Xml.Serialization.SoapReflectionImporter.ImportStructLikeMapping(), System.Xml.Serialization.SoapReflectionImporter.ImportTypeMapping(), System.ToString, System.SR.XmlDataTypeMismatch, System.SR.XmlInvalidDataTypeUsage, System.SR.XmlInvalidTypeAttributes, System.SR.XmlInvalidXsdDataType, and System.SR.XmlUnsupportedSoapTypeKind.