summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Build.Tasks
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2017-04-20 20:53:13 +0200
committerGitHub <noreply@github.com>2017-04-20 20:53:13 +0200
commitabdad979ce9de6f4d5f43774886f61f5e9e9e95f (patch)
treea116674c78706ebe10a9a9852604489f8cfe6d73 /Xamarin.Forms.Build.Tasks
parentb0b43c686d3358a357f6640c6d826502dcfba45d (diff)
downloadxamarin-forms-abdad979ce9de6f4d5f43774886f61f5e9e9e95f.tar.gz
xamarin-forms-abdad979ce9de6f4d5f43774886f61f5e9e9e95f.tar.bz2
xamarin-forms-abdad979ce9de6f4d5f43774886f61f5e9e9e95f.zip
[XamlC] allow namespaces in {x:Type} markups (#867)
* [XamlC] allow namespaces in {x:Type} markups * missing test
Diffstat (limited to 'Xamarin.Forms.Build.Tasks')
-rw-r--r--Xamarin.Forms.Build.Tasks/XmlTypeExtensions.cs11
1 files changed, 9 insertions, 2 deletions
diff --git a/Xamarin.Forms.Build.Tasks/XmlTypeExtensions.cs b/Xamarin.Forms.Build.Tasks/XmlTypeExtensions.cs
index 3dd1d739..893108e1 100644
--- a/Xamarin.Forms.Build.Tasks/XmlTypeExtensions.cs
+++ b/Xamarin.Forms.Build.Tasks/XmlTypeExtensions.cs
@@ -107,16 +107,23 @@ namespace Xamarin.Forms.Build.Tasks
if (type != null)
break;
+ var clrNamespace = asm.ClrNamespace;
+ var typeName = name;
+ var idx = typeName.LastIndexOf('.');
+ if (idx >= 0) {
+ clrNamespace += '.' + typeName.Substring(0, typeName.LastIndexOf('.'));
+ typeName = typeName.Substring(typeName.LastIndexOf('.') + 1);
+ }
var assemblydefinition = module.Assembly.Name.Name == asm.AssemblyName ?
module.Assembly :
module.AssemblyResolver.Resolve(AssemblyNameReference.Parse(asm.AssemblyName));
- type = assemblydefinition.MainModule.GetType(asm.ClrNamespace, name);
+ type = assemblydefinition.MainModule.GetType(clrNamespace, typeName);
if (type == null)
{
var exportedtype =
assemblydefinition.MainModule.ExportedTypes.FirstOrDefault(
- (ExportedType arg) => arg.IsForwarder && arg.Namespace == asm.ClrNamespace && arg.Name == name);
+ (ExportedType arg) => arg.IsForwarder && arg.Namespace == clrNamespace && arg.Name == typeName);
if (exportedtype != null)
type = exportedtype.Resolve();
}