2010-02-09 19 views
5

Probablemente esto no sea posible, pero aquí va:argumentos de longitud variable C#

que quieren crear una estructura donde puedo definir la cantidad de argumentos en la declaración.

por ejemplo, ahora estoy usando:

KeyValuePair<T, T> 

pero KeyValuePair solamente nunca puede tener una clave y un valor.

¿Es posible hacer algo como:

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

creo que esto no es posible, pero tal vez yo no sé lo suficiente de C#. También estoy abierto a soluciones inteligentes,

Gracias

Respuesta

3

No, esto no es posible, como se muestra en Func<T>, Func<T, TResult>, Func<T1, T2, TResult>, etc.

+0

Así que, esencialmente, solo tienen múltiples declaraciones? con 1-10 argumentos? –

+3

Bueno, eso o considere si realmente es una buena manera de modelar su API. A menudo no lo es. Sin embargo, en .NET 4, obtenemos muchos tipos de Tuple así. –

+0

Sé que es una lógica terrible, pero lo que quiero evitar es tener montones y montones de estructuras personalizadas creadas para tareas minúsculas, como pasar los resultados SQL hacia adelante y hacia atrás en las funciones. Sé que LINQ resuelve esto, pero 2.0 por ahora –

1

embargo, el tipo de valor KVP puede ser de carácter genérico, así:

KeyValuePair<T, List<U,V>> 

O:

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

Quiero crear algo que los programadores junior pueden utilizar fácilmente, en lugar de darles una opción para hacer lo que viene a la mente primero –

1

Usted puede probar este

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

¿Funcionará para usted?

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

No, no quiero una matriz de KeyValuePair (s), quiero hacer mi propia KeyValuePair personalizada, donde puedo pasar tantos argumentos como quiera –

Cuestiones relacionadas