For IXmlSerializable/XData, Instance property returns null (!)
authorAtsushi Eno <atsushi@ximian.com>
Thu, 16 Dec 2010 07:27:19 +0000 (16:27 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Thu, 16 Dec 2010 07:27:19 +0000 (16:27 +0900)
mcs/class/System.Xaml/System.Xaml/XamlObjectReader.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlReaderTestBase.cs

index 704fb4c34b69a362aeff3ace2db875b10ec4f53c..0a418cbc7f88227aa8cc591d6b4a0e71c6a65aea 100644 (file)
@@ -119,10 +119,11 @@ namespace System.Xaml
                // - For root Type it returns TypeExtension.
                // - For root Array it returns Array.
                // - For non-root Type it returns Type.
+               // - For IXmlSerializable, it does not either return the raw IXmlSerializable or interpreted XData (it just returns null).
                public virtual object Instance {
                        get {
                                var cur = NodeType == XamlNodeType.StartObject ? nodes.Current.Object.GetRawValue () : null;
-                               return cur == root ? root_raw : cur;
+                               return cur == root ? root_raw : cur is XData ? null : cur;
                        }
                }
 
index 14af2475ddaa66a4a08dab73c6fea5fa12850433..b5f32acbd7ee4205f5362b8fc6f35b43fc7e8d36 100644 (file)
@@ -2192,6 +2192,8 @@ namespace MonoTests.System.Xaml
                        Assert.IsTrue (r.Read (), "so#2-1");
                        Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#2-2");
                        Assert.AreEqual (XamlLanguage.XData, r.Type, "so#2-3");
+                       if (r is XamlObjectReader)
+                               Assert.IsNull (((XamlObjectReader) r).Instance, "xdata-instance");
 
                        Assert.IsTrue (r.Read (), "sm2#1");
                        Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "sm2#2");