Mi sono imbattuto nel bellissimo delegato Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
in C# .NET 4.5 oggi. Presumo che 16 fosse un luogo arbitrario da fermare (quali metodi hanno più di 16 parametri?) Ma mi ha fatto pensare: è possibile in C# specificare che un tipo generico può avere un numero qualsiasi di argomenti tipo? in modo simile che la parola chiave params per metodi consente un numero qualsiasi di argomenti per un metodo. Qualcosa di simile a questo:Utilizzo della parola chiave "params" per i parametri generici in C#
public class MyInfiniteGenericType<params T[]> { ... }
dove all'interno della classe si potrebbe quindi accedere agli argomenti di tipo enumerando attraverso di loro o utilizzando T[index]
nello stesso modo in cui params
permette all'interno dei metodi.
Non l'ho mai usato personalmente, ma il delegato di Func sarebbe un posto perfetto per usarlo. Non ci sarebbe bisogno di 16 diversi tipi di Func!
Quindi la mia domanda è, questo può essere fatto in qualsiasi modo in C#, e se non è un'idea stupida?
Discusso tangenzialmente altrove su SO: http://stackoverflow.com/a/4046525/63225 – sblom