From cbb6518d6adc69273155785aaf7796d6909c2ef6 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Fri, 12 Nov 2010 19:56:28 +0900 Subject: [PATCH] Extension types may have omitted "Extension" from XML name. --- mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs | 17 ++++++++++++----- .../System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs | 2 -- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs b/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs index 5f909335dff..c37faee0042 100755 --- a/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs +++ b/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs @@ -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); } } } diff --git a/mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs b/mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs index 976f789d368..ad0b7b55828 100755 --- a/mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs +++ b/mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs @@ -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"); -- 2.11.4.GIT