Extension types may have omitted "Extension" from XML name.
authorAtsushi Eno <atsushi@ximian.com>
Fri, 12 Nov 2010 10:56:28 +0000 (19:56 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Fri, 12 Nov 2010 10:56:28 +0000 (19:56 +0900)
mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs

index 5f909335dff06ece9dbdf3e03c0b02758a85e105..c37faee0042dc07c4d963573507046ae70489258 100755 (executable)
@@ -291,14 +291,21 @@ namespace System.Xaml
                        string tns = split [0].Substring (clr_ns_len);
                        string aname = split [1].Substring (clr_ass_len);
 
+                       // MarkupExtension type could omit "Extension" part in XML name.
+                       string taqn = GetTypeName (tns, name, genArgs, aname);
+                       var ret = System.Type.GetType (taqn) ?? System.Type.GetType (GetTypeName (tns, name + "Extension", genArgs, aname));
+
+                       if (ret == null)
+                               throw new XamlParseException (string.Format ("Cannot resolve runtime type from XML namespace '{0}', local name '{1}' with {2} type arguments ({3})", ns, name, typeArguments !=null ? typeArguments.Count : 0, taqn));
+                       return genArgs == null ? ret : ret.MakeGenericType (genArgs);
+               }
+               
+               static string GetTypeName (string tns, string name, Type [] genArgs, string aname)
+               {
                        string tfn = tns.Length > 0 ? tns + '.' + name : name;
                        if (genArgs != null)
                                tfn += "`" + genArgs.Length;
-                       string taqn = tfn + (aname.Length > 0 ? ", " + aname : string.Empty);
-                       var ret = System.Type.GetType (taqn);
-                       if (ret == null)
-                               throw new XamlParseException (string.Format ("Cannot resolve runtime type from XML namespace '{0}', local name '{1}' with {2} type arguments ({3})", ns, name, typeArguments.Count, taqn));
-                       return genArgs == null ? ret : ret.MakeGenericType (genArgs);
+                       return tfn + (aname.Length > 0 ? ", " + aname : string.Empty);
                }
        }
 }
index 976f789d368ca9ba2c07f8349a9436533851439e..ad0b7b5582809bc4d441b20dec07a3cf9950f41e 100755 (executable)
@@ -390,7 +390,6 @@ namespace MonoTests.System.Xaml
                }
                
                [Test]
-               [Category ("NotWorking")]
                public void Read_MyArrayExtension ()
                {
                        var r = GetReader ("MyArrayExtension.xml");
@@ -405,7 +404,6 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Read_CustomMarkupExtension ()
                {
                        var r = GetReader ("MyExtension.xml");