Ich habe eine Funktion wie folgt definiert:Kombination getPropertyName + mehr params-Funktion (Schlüsselwort params)
public static string GetPropertyName<T>(Expression<Func<T>> memberExpression)
{
MemberExpression expressionBody = (MemberExpression)memberExpression.Body;
return expressionBody.Member.Name;
}
Diese Funktion gibt den Namen des Parameters er empfängt.
getPropertyName (() => SomeParameter) -> Gibt die Zeichenfolge "SomeParameter"
Mein Problem dies mit mehreren Parametern Funktionen kombiniert.
Nehmen Sie diese Funktion:
public static string NameOfFirstEmptyParam(params string[] parameters)
{
foreach (string p in parameters)
{
if (String.IsNullOrWhiteSpace(p))
return GetPropertyName<String>(() => p)
}
return null;
}
Wie Sie sich vorstellen können, wenn wir dies tun:
string param0 = "0";
string param1 = "1";
string param2 = null;
NameOfFirstEmptyParam(param0, param1, param2);
Die Funktion gibt "p".
Ich möchte stattdessen "Param2" bekommen. Irgendwelche Vorschläge oder Hinweise?
Vielen Dank.
Die Syntax auszuführen, für 'params' ist kein Zufall/Zufall. Der aufrufende Code muss ein Array konstruieren und diesen als * single * -Parameter namens 'parameters' übergeben. Innerhalb von 'NameOfFirstEmptyParam' erhalten Sie nur diesen einen Parameter. Alle Namen, die zum Identifizieren von Variablen verwendet wurden, die als Teil des * Auffüllens * des Arrays verwendet wurden, das an Sie übergeben wurde, sind in keiner Weise "im Geltungsbereich" der 'NameOfFirstEmptyParam'-Methode. –
Wie @Damien_The_Unbeliever erklärt, zur Laufzeit gibt es nirgends 'paramX', diese sind äquivalent zum Schreiben' NameOfFirstEmptyParam (new string [] {"0", "1", null}); '. – zaitsman