Penso che quello che stai cercando non esiste. Il più vicino si può avere è 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");
Non v'è alcun controllo di tipo tempo di compilazione, e quindi non è un modo per tutti gli usi per gestire argomenti. Ma se i tuoi argomenti sono dinamici, è probabilmente una soluzione.
Edit: ha avuto un'altra idea:
Hai bisogno di mettere manualmente ogni discussione in un elenco/dizionario. È possibile scrivere una classe di supporto per consentire il seguente:
MyMethod(int arg1, string arg2)
{
Arguments.Add(() => arg1);
Arguments.Add(() => arg2);
//
}
L'aiutante si presenta così
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);
}
fonte
2009-05-07 08:42:20
Sì. Non li avrai. Otterrai solo i nomi dei parametri. Quindi penso che non funzionerà. – Kirtan
@Robin: hai visto la mia implementazione per aggiungere facilmente argomenti a un dizionario? Ho modificato la mia risposta. È stato utile? –