2010-02-09 15 views
5

questo probabilmente non è possibile, ma qui va:argomenti di lunghezza variabile C#

Voglio creare una struttura in cui posso definire la quantità di argomenti a dichiarazione.

per esempio, ora sto usando:

KeyValuePair<T, T> 

ma KeyValuePair può sempre e solo prendere una chiave e un valore.

E 'possibile fare qualcosa di simile:

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

credo che questo non è possibile, ma forse sono io che non conosco abbastanza C#. Sono anche aperto a soluzioni alternative intelligenti,

Grazie

risposta

3

No, questo non è possibile, come mostrato da Func<T>, Func<T, TResult>, Func<T1, T2, TResult>, ecc.

.210
+0

Quindi, in sostanza, basta avere più dichiarazioni? con discussioni 1-10? –

+3

Bene, questo, o considera se è in realtà un buon modo per modellare la tua API a tutti. Spesso non lo è. Tuttavia, in .NET 4, abbiamo molti tipi di Tuple proprio così. –

+0

So che è una logica terribile, ma quello che voglio evitare è avere carichi e carichi di strutture personalizzate create per attività minuscole, come il passaggio di risultati SQL avanti e indietro nelle funzioni. So che LINQ risolve questo problema, ma 2.0 per ora –

1

Ma, il tipo di valore di KVP può essere un generico così:

KeyValuePair<T, List<U,V>> 

O:

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

voglio creare qualcosa che i programmatori junior possono usare facilmente, invece di dare loro una scelta di fare tutto ciò viene loro in mente prima –

1

Si può provare questo

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

Sarà questo lavoro per te?

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

No, non voglio una matrice di KeyValuePair (s), voglio creare il mio KeyValuePair personalizzato, dove posso passare il numero di argomenti che voglio –

Problemi correlati