Merge pull request #3626 from lateralusX/jlorenss/win-api-family-support-eglib
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlSerializer.cs
index 8e9fe3e91bf86055ebf2019c66f76db07e94f97d..60bbc316699e378070fa9628ddd884b9e818f2da 100644 (file)
@@ -37,7 +37,7 @@ using System.Reflection;
 using System.Xml;
 using System.Xml.Schema;
 using System.Text;
-#if !NET_2_1
+#if !MOBILE
 using System.CodeDom;
 using System.CodeDom.Compiler;
 using Microsoft.CSharp;
@@ -121,7 +121,7 @@ namespace System.Xml.Serialization
                        //       debugging pourposes by adding the "nofallback" option.
                        //       For example: MONO_XMLSERIALIZER_THS=0,nofallback
                        
-#if NET_2_1
+#if MOBILE
                        string db = null;
                        string th = null;
                        generationThreshold = -1;
@@ -150,15 +150,22 @@ namespace System.Xml.Serialization
                        }
 #endif
                        deleteTempFiles = (db == null || db == "no");
-#if !NET_2_1
-                       IDictionary table = (IDictionary) ConfigurationSettings.GetConfig("system.diagnostics");
+#if !MOBILE && CONFIGURATION_DEP
+                       // DiagnosticsSection
+                       ConfigurationSection table = (ConfigurationSection) ConfigurationSettings.GetConfig("system.diagnostics");
+                       var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
                        if (table != null) 
                        {
-                               table = (IDictionary) table["switches"];
-                               if (table != null) 
-                               {
-                                       string val = (string) table ["XmlSerialization.Compilation"];
-                                       if (val == "1") deleteTempFiles = false;
+                               // SwitchElementsCollection
+                               var pi = table.GetType ().GetProperty ("Switches", bf);
+                               var switchesElement = (ConfigurationElementCollection) pi.GetValue (table, null);
+                               foreach (ConfigurationElement e in switchesElement) {
+                                       // SwitchElement
+                                       if (e.GetType ().GetProperty ("Name", bf).GetValue (e, null) as string == "XmlSerialization.Compilation") {
+                                               if (e.GetType ().GetProperty ("Value", bf).GetValue (e, null) as string == "1")
+                                                       deleteTempFiles = false;
+                                               break;
+                                       }
                                }
                        }
 #endif
@@ -197,6 +204,11 @@ namespace System.Xml.Serialization
                {
                }
 
+               public XmlSerializer (Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, string defaultNamespace, string location)
+                       : this (type, overrides, extraTypes, root, defaultNamespace, location, null)
+               {
+               }
+
                public XmlSerializer (Type type, XmlAttributeOverrides overrides)
                        : this (type, overrides, null, null, null)
                {
@@ -572,7 +584,7 @@ namespace System.Xml.Serialization
                                }
                        }
                        
-#if !NET_2_1
+#if !MOBILE
                        if (!typeMapping.Source.CanBeGenerated || generationThreshold == -1)
                                return new XmlSerializationWriterInterpreter (typeMapping);
 
@@ -593,7 +605,7 @@ namespace System.Xml.Serialization
                
                XmlSerializationReader CreateReader (XmlMapping typeMapping)
                {
-#if !NET_2_1
+#if !MOBILE
                        XmlSerializationReader reader;
                        
                        lock (this) {
@@ -623,7 +635,7 @@ namespace System.Xml.Serialization
                        return new XmlSerializationReaderInterpreter (typeMapping);
                }
                
-#if NET_2_1
+#if MOBILE
                void CheckGeneratedTypes (XmlMapping typeMapping)
                {
                        throw new NotImplementedException();