public override object Resolve(ValueTypeResolutionContext context) { if (!typeof(Enum).IsAssignableFrom(context.DesiredType)) { return(base.Resolve(context)); } return(ResolveEnum(context)); }
public Expression GetValueExpression(string input, Type targetType) { var resolutionContext = new ValueTypeResolutionContext( value: input, desiredType: targetType); var parsedValue = _valueTypeResolver.Resolve(resolutionContext); return(Expression.Constant(parsedValue, targetType)); }
private object ResolveEnum(ValueTypeResolutionContext context) { var enumType = context.DesiredType; var parserType = typeof(EnumValueParser <>).MakeGenericType(enumType); var parser = Activator.CreateInstance(parserType); var parserMethod = parserType.GetMethod("Parse", new Type[] { typeof(string) }); var result = parserMethod.Invoke(parser, new[] { context.Value }); return(result); }
public virtual object Resolve(ValueTypeResolutionContext context) { var parserBinding = ValueParserBindings.First(binding => binding.Type.IsAssignableFrom(context.DesiredType)); return(parserBinding.Parser.Parse(context.Value)); }