Я думаю, что вы ищете, не существует. Самое близкое, что вы можете иметь, это params:
MyMethod(params object[] args)
{
// if you have to do this, it's quite bad:
int intArg = (int)args[0];
string stringArg = (string)arg[1]:
}
// call with any number (and type) of argument
MyMethod(7, "tr");
Нет проверки типов во время компиляции, и, следовательно, это не универсальный способ обработки аргументов. Но если ваши аргументы динамические, это, вероятно, решение.
Редактировать: была еще одна идея:
Вам необходимо поместить все аргументы вручную в список / словарь. Вы можете написать вспомогательный класс, чтобы разрешить следующее:
MyMethod(int arg1, string arg2)
{
Arguments.Add(() => arg1);
Arguments.Add(() => arg2);
//
}
Помощник выглядит так
public static void Add<T>(Expression<Func<T>> expr)
{
// run the expression to get the argument value
object value = expr.Compile()();
// get the argument name from the expression
string argumentName = ((MemberExpression)expr.Body).Member.Name;
// add it to some list:
argumentsDic.Add(argumentName, value);
}