2010-02-09 16 views
5

Dies ist wahrscheinlich nicht möglich ist, aber hier geht:variabler Länge Argumente C#

Ich mag eine Struktur schaffen, in dem ich die Menge der Argumente bei der Deklaration definieren kann.

zum Beispiel, jetzt verwende ich:

KeyValuePair<T, T> 

aber KeyValuePair kann nur je einen Schlüssel nehmen, und einen Wert.

Ist es möglich, so etwas wie zu machen:

CustomValues<T, {T, {..}}> 

Ich denke, das ist nicht möglich, aber vielleicht ich weiß es einfach nicht genug C#. Ich bin auch offen für clevere Abhilfen,

Danke

Antwort

3

Nein, das ist nicht möglich, wie von Func<T>, Func<T, TResult>, Func<T1, T2, TResult>, etc.

dargestellt
+0

zuerst kommt, nur mehrere Erklärungen haben? mit 1-10 Argumenten? –

+3

Nun, das, oder überlegen Sie, ob es wirklich eine gute Möglichkeit ist, Ihre API überhaupt zu modellieren. Oft ist es nicht. In .NET 4 erhalten wir jedoch viele Tuple-Typen. –

+0

Ich weiß, dass es eine schlimme Logik ist, aber was ich vermeiden möchte, sind Lasten und Lasten von benutzerdefinierten Strukturen, die für winzige Aufgaben erstellt wurden, wie zB SQL-Ergebnisse in Funktionen hin- und herreichen. Ich weiß, LINQ löst das, aber 2.0 für jetzt –

1

Aber Ihr KVP Werttyp ein generischer auch sein kann:

KeyValuePair<T, List<U,V>> 

OR:

KeyValuePair<T, KeyValuePair<U,V>> 
+0

Ich möchte etwas schaffen, das die Junior-Programmierer leicht verwenden können, anstatt sie eine Wahl zu geben, alles zu tun, um ihren Geist So im Wesentlichen –

1

können Sie versuchen, diese

public class CustomClass 
    { 
    KeyValuePair<T , KeyValuePair<T, V>> setOfArguments; 
    public CustomClass(KeyValuePair<T, KeyValuePair<T, V>> _setOfArguments) 
     { 
     setOfArguments = _setOfArguments; 
     }  
    } 
0

Wird diese Arbeit für Sie?

public void UseParams(params KeyValuePair<String, String>[] list) { 
    ... 
} 
+0

Nein, ich möchte kein Array von KeyValuePair (s), ich möchte mein eigenes KeyValuePair erstellen, in das ich so viele Argumente eingeben kann, wie ich möchte –

Verwandte Themen