I need to write a bunch of methods that take 1..N generic type parameters, eg:
int Foo<T1>(); int Foo<T1,T2>(); int Foo<T1,T2,T3>(); ... int Foo<T1,T2,T3...TN>(); Inside Foo() I would like to do something for each type, eg
int Foo<T1,T2,T3>() { this.data = new byte[3]; // allocate 1 array slot per type } Is there any way to parameterize this so that I am not editing every variation of Foo(), something analogous to:
int Foo<T1,T2,T3>() { this.data = new byte[_NUMBER_OF_GENERIC_PARAMETERS]; } Ideally, I'd also like to be able to get an array or collection of the types as well:
int Foo<T1,T2,T3>() { this.data = new byte[_NUMBER_OF_GENERIC_PARAMETERS]; // can do this Type [] types = new Type[] { T1, T2, T3 }; // but would rather do this Type [] types = _ARRAY_OR_COLLECTION_OF_THE_GENERIC_PARAMETERS; }
Types directly. (Unless you're trying to capture the compile-time types of a variadic parameter list but that doesn't really make sense either - aparamslist is an array of a predetermined type.)