protected static object[] MarshalArgumentsStrict(System.Reflection.MethodInfo method, IValue[] arguments) { var parameters = method.GetParameters(); object[] marshalledArgs = new object[parameters.Length]; for (int i = 0; i < parameters.Length; i++) { if (i < arguments.Length) { if (IsMissedArg(arguments[i]) && parameters[i].IsOptional) { marshalledArgs[i] = Type.Missing; } else { marshalledArgs[i] = ContextValuesMarshaller.ConvertParam(arguments[i], parameters[i].ParameterType); } } else { marshalledArgs[i] = Type.Missing; } } return(marshalledArgs); }
private static T ConvertParam <T>(IValue value, object def) { if (value == null || value.DataType == DataType.NotAValidValue) { return((T)def); } return(ContextValuesMarshaller.ConvertParam <T>(value)); }
protected static object[] MarshalArgumentsStrict(IValue[] arguments, Type[] argumentsTypes) { if (argumentsTypes.Length < arguments.Length) { throw RuntimeException.TooManyArgumentsPassed(); } object[] marshalledArgs = new object[arguments.Length]; for (int i = 0; i < arguments.Length; i++) { marshalledArgs[i] = ContextValuesMarshaller.ConvertParam(arguments[i], argumentsTypes[i]); } return(marshalledArgs); }
private T ConvertParam <T>(IValue value) { return(ContextValuesMarshaller.ConvertParam <T>(value)); }