Exemplo n.º 1
0
        public override object Resolve(ValueTypeResolutionContext context)
        {
            if (!typeof(Enum).IsAssignableFrom(context.DesiredType))
            {
                return(base.Resolve(context));
            }

            return(ResolveEnum(context));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        public virtual object Resolve(ValueTypeResolutionContext context)
        {
            var parserBinding = ValueParserBindings.First(binding => binding.Type.IsAssignableFrom(context.DesiredType));

            return(parserBinding.Parser.Parse(context.Value));
        }