Ejemplo n.º 1
0
        private static object GetParameter(ParameterInfo param, VariableTypes variableTypes, IEnumerable <ExecArgument <Info> > inputs)
        {
            var input = inputs.FirstOrDefault(i => i.Argument.ArgumentName == param.Name);

            return(input != null
                ? variableTypes.TranslateValue(input.Value, param.ParameterType)
                : GetDefault(param.ParameterType));
        }
Ejemplo n.º 2
0
        private static object GetAnonymousArgs
            (ConstructorInfo anonTypeCtor, VariableTypes variableTypes, IEnumerable <ExecArgument <Info> > inputs)
        {
            var parameters = anonTypeCtor
                             .GetParameters()
                             .Select(p => GetParameter(p, variableTypes, inputs))
                             .ToArray();

            return(anonTypeCtor.Invoke(parameters));
        }
Ejemplo n.º 3
0
        internal static object GetArgs(Type argsType, VariableTypes variableTypes, IEnumerable <ExecArgument <Info> > inputs)
        {
            var paramlessCtor = argsType.GetConstructors().FirstOrDefault(c => c.GetParameters().Length == 0);

            if (paramlessCtor != null)
            {
                return(GetParamlessArgs(argsType, paramlessCtor, variableTypes, inputs));
            }
            var anonTypeCtor = argsType.GetConstructors().Single();

            return(GetAnonymousArgs(anonTypeCtor, variableTypes, inputs));
        }
Ejemplo n.º 4
0
        internal static IEnumerable <ISchemaArgument <Info> > GetArgs(VariableTypes variableTypes, Type argsType)
        {
            var paramlessCtor = argsType.GetConstructors().FirstOrDefault(c => c.GetParameters().Length == 0);

            if (paramlessCtor != null)
            {
                return(argsType.GetProperties()
                       .Select(p => new SchemaArgument(p.Name, variableTypes.VariableTypeOf(p.PropertyType))));
            }
            var anonTypeCtor = argsType.GetConstructors().Single();

            return(anonTypeCtor.GetParameters()
                   .Select(p => new SchemaArgument(p.Name, variableTypes.VariableTypeOf(p.ParameterType))));
        }
Ejemplo n.º 5
0
        private static object GetParamlessArgs
            (Type argsType, ConstructorInfo paramlessCtor, VariableTypes variableTypes, IEnumerable <ExecArgument <Info> > inputs)
        {
            var args = paramlessCtor.Invoke(null);

            foreach (var input in inputs)
            {
                var prop = argsType.GetProperty(input.Argument.ArgumentName);
                prop.GetSetMethod()
                .Invoke(args, new[]
                {
                    variableTypes.TranslateValue(input.Value, prop.PropertyType)
                });
            }
            return(args);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Instantiate an object of <typeparamref name="TArgs"/> given a list of <paramref name="inputs"/>.
 /// This works for objects with parameterless constructors or anonymous types.
 /// </summary>
 /// <typeparam name="TArgs"></typeparam>
 /// <param name="variableTypes"></param>
 /// <param name="inputs"></param>
 /// <returns></returns>
 internal static TArgs GetArgs <TArgs>(VariableTypes variableTypes, IEnumerable <ExecArgument <Info> > inputs)
 => (TArgs)GetArgs(typeof(TArgs), variableTypes, inputs);
Ejemplo n.º 7
0
 internal static IEnumerable <ISchemaArgument <Info> > GetArgs <TArgs>(VariableTypes variableTypes)
 => GetArgs(variableTypes, typeof(TArgs));
Ejemplo n.º 8
0
 public MetaTypeHandler(VariableTypes variableTypes)
 {
     _variableTypes = variableTypes;
 }
Ejemplo n.º 9
0
 public MetaTypeHandler(VariableTypes variableTypes)
 {
     _variableTypes = variableTypes;
 }