using System.Collections;\r
using System.Runtime.Remoting;\r
using System.Xml.Serialization;\r
+using System.Xml.Schema;\r
\r
namespace System.Runtime.Serialization.Formatters.Soap {\r
\r
// returns the SoapTypeMapping corresponding to the System.Type\r
public static SoapTypeMapping GetSoapType(Type type) {\r
object rtnMapping;\r
- \r
+\r
+ if (type.IsByRef) type = type.GetElementType ();\r
+\r
\r
if(type.IsArray){\r
rtnMapping = _mappingTable[typeof(System.Array)];\r
rtnMapping = (object) _mappingTable[type];\r
\r
if(rtnMapping == null){\r
- \r
string sTypeNamespace;\r
AssemblyName assName = type.Assembly.GetName();\r
if(assName.Name.StartsWith("mscorlib")) sTypeNamespace = "http://schemas.microsoft.com/clr/ns/"+type.Namespace;\r
\r
return (Type)rtnObject;\r
}\r
+\r
+ private static void RegisterSchemaType (Type type, string typeName, bool canBeValue, bool isPrimitive,bool isValueType,bool needId)\r
+ {\r
+ SoapTypeMapping mapping = new SoapTypeMapping (type, typeName, canBeValue, isPrimitive, isValueType, needId);\r
+ _mappingTable.Add(type, mapping);\r
+ _invertMappingTable.Add(mapping, type);\r
+ }\r
\r
// initialize the mapping tables\r
private static void InitMappingTable() {\r
mapping = new SoapTypeMapping(typeof(string), "string", true, false, false, true);\r
_mappingTable.Add(typeof(string),mapping);\r
_invertMappingTable.Add(mapping, typeof(string));\r
- mapping = new SoapTypeMapping(typeof(string), "string", "http://www.w3.org/2001/XMLSchema", true, false, false, true);\r
+ mapping = new SoapTypeMapping(typeof(string), "string", XmlSchema.Namespace, true, false, false, true);\r
_invertMappingTable.Add(mapping, typeof(string));\r
- \r
- // the primitive type "System.Int16"\r
- mapping = new SoapTypeMapping(typeof(short), "short", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(short), mapping);\r
- _invertMappingTable.Add(mapping, typeof(short));\r
- \r
- // the primitive type "System.Int32"\r
- mapping = new SoapTypeMapping(typeof(int), "int", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(int), mapping);\r
- _invertMappingTable.Add(mapping, typeof(int));\r
- \r
- // the primitive type "System.Boolean"\r
- mapping = new SoapTypeMapping(typeof(bool), "boolean", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(bool), mapping);\r
- _invertMappingTable.Add(mapping, typeof(bool));\r
- \r
- // the primitive type "System.long"\r
- mapping = new SoapTypeMapping(typeof(long), "long", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(long), mapping);\r
- _invertMappingTable.Add(mapping, typeof(long));\r
- \r
- // the primitive type "System.double"\r
- mapping = new SoapTypeMapping(typeof(double), "double", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(double), mapping);\r
- _invertMappingTable.Add(mapping, typeof(double));\r
- \r
- // the primitive type "System.Char"\r
- mapping = new SoapTypeMapping(typeof(Char), "Char", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(Char), mapping);\r
- _invertMappingTable.Add(mapping, typeof(Char));\r
- \r
- // the primitive type "System.Single"\r
- mapping = new SoapTypeMapping(typeof(System.Single), "float", "http://www.w3.org/2001/XMLSchema", true, true, true, false);\r
- _mappingTable.Add(typeof(System.Single), mapping);\r
- _invertMappingTable.Add(mapping, typeof(System.Single));\r
- \r
- mapping = new SoapTypeMapping(typeof(System.Array), "Array", false, false, false, true);\r
- _mappingTable.Add(typeof(System.Array), mapping);\r
- _invertMappingTable.Add(mapping, typeof(System.Array));\r
- \r
- mapping = new SoapTypeMapping(typeof(object), "anyType", "http://www.w3.org/2001/XMLSchema", false, false, false, true);\r
- _mappingTable.Add(typeof(object), mapping);\r
- _invertMappingTable.Add(mapping, typeof(object));\r
+\r
+ RegisterSchemaType (typeof(short), "short", true, true, true, false);\r
+ RegisterSchemaType (typeof(ushort), "unsignedShort", true, true, true, false);\r
+ RegisterSchemaType (typeof(int), "int", true, true, true, false);\r
+ RegisterSchemaType (typeof(uint), "unsignedInt", true, true, true, false);\r
+ RegisterSchemaType (typeof(long), "long", true, true, true, false);\r
+ RegisterSchemaType (typeof(ulong), "unsignedLong", true, true, true, false);\r
+ RegisterSchemaType (typeof(decimal), "decimal", true, true, true, false);\r
+ RegisterSchemaType (typeof(sbyte), "byte", true, true, true, false);\r
+ RegisterSchemaType (typeof(byte), "unsignedByte", true, true, true, false);\r
+ RegisterSchemaType (typeof(DateTime), "dateTime", true, true, true, false);\r
+ RegisterSchemaType (typeof(TimeSpan), "duration", true, true, true, false);\r
+ RegisterSchemaType (typeof(double), "double", true, true, true, false);\r
+ RegisterSchemaType (typeof(Char), "char", true, true, true, false);\r
+ RegisterSchemaType (typeof(bool), "boolean", true, true, true, false);\r
+ RegisterSchemaType (typeof(System.Single), "float", true, true, true, false);\r
+ RegisterSchemaType (typeof(System.Array), "Array", false, false, false, true);\r
+ RegisterSchemaType (typeof(object), "anyType", false, false, false, true);\r
\r
mapping = new SoapTypeMapping(typeof(System.Runtime.Serialization.Formatters.SoapFault), "Fault", "http://schemas.xmlsoap.org/soap/envelope/", false, false, false, true);\r
_mappingTable.Add(typeof(System.Runtime.Serialization.Formatters.SoapFault), mapping);\r