Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / class / System.Runtime.Serialization / System.Runtime.Serialization / DataContractSerializer.cs
index 78303b50826803d957ee6a20e47925175b1200b2..8e713d78eb17b74b356b275963efe1fce6d35c9c 100755 (executable)
@@ -25,7 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -214,6 +214,16 @@ namespace System.Runtime.Serialization
                }
 #endif
 
+#if NET_4_5
+               public DataContractSerializer (Type type, DataContractSerializerSettings settings)
+                       : this (type, settings.RootName, settings.RootNamespace, settings.KnownTypes,
+                               settings.MaxItemsInObjectGraph, settings.IgnoreExtensionDataObject,
+                               settings.PreserveObjectReferences, settings.DataContractSurrogate,
+                               settings.DataContractResolver)
+               {
+               }
+#endif
+
                void PopulateTypes (IEnumerable<Type> knownTypes)
                {
                        if (known_types == null)
@@ -238,8 +248,10 @@ namespace System.Runtime.Serialization
                                return;
 
                        Type elementType = type;
-                       if (type.HasElementType)
+                       if (type.HasElementType) {
+                               known_types.Add (type);
                                elementType = type.GetElementType ();
+                       }
 
                        known_types.Add (elementType);
 
@@ -540,6 +552,12 @@ namespace System.Runtime.Serialization
                {
                        WriteEndObject (XmlDictionaryWriter.CreateDictionaryWriter (writer));
                }
+
+#if NET_4_5
+               [MonoTODO]
+               public bool SerializeReadOnlyTypes {
+                       get { throw new NotImplementedException (); }
+               }
+#endif
        }
 }
-#endif