Browse Source

Throw an exception if selector class not found.

Fixes #2316.
pull/2317/head
Steven Kirk 8 years ago
parent
commit
354496b9b2
  1. 17
      src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs

17
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;
}
}
}

Loading…
Cancel
Save