From 354496b9b24fb25849b180d0e80481e4f79d428f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 19 Feb 2019 13:56:05 +0100 Subject: [PATCH] Throw an exception if selector class not found. Fixes #2316. --- .../Markup/Parsers/SelectorParser.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs index 8d1216e1dc..8137ac3f48 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs @@ -50,10 +50,10 @@ namespace Avalonia.Markup.Parsers { case SelectorGrammar.OfTypeSyntax ofType: - result = result.OfType(_typeResolver(ofType.Xmlns, ofType.TypeName)); + result = result.OfType(Resolve(ofType.Xmlns, ofType.TypeName)); break; case SelectorGrammar.IsSyntax @is: - result = result.Is(_typeResolver(@is.Xmlns, @is.TypeName)); + result = result.Is(Resolve(@is.Xmlns, @is.TypeName)); break; case SelectorGrammar.ClassSyntax @class: result = result.Class(@class.Class); @@ -113,5 +113,18 @@ namespace Avalonia.Markup.Parsers return result; } + + private Type Resolve(string xmlns, string typeName) + { + var result = _typeResolver(xmlns, typeName); + + if (result == null) + { + var type = string.IsNullOrWhiteSpace(xmlns) ? typeName : xmlns + ':' + typeName; + throw new InvalidOperationException($"Could not resolve type '{type}'"); + } + + return result; + } } }