Сегодня я встретил красивый Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
делегат в С#.NET 4.5. Я предполагаю, что 16 было произвольным местом для остановки (какие методы имеют более 16 параметров?), Но это заставило меня задуматься: возможно ли в С# указать, что общий тип может иметь любое количество аргументов типа? аналогичным образом, что ключевое слово params для методов допускает любое количество аргументов для метода. Что-то вроде этого:
public class MyInfiniteGenericType<params T[]> { ... }
где внутри класса вы могли бы получить доступ к аргументам типа путем перечисления через них или с помощью T[index]
таким же образом, что params
допускает внутри методов.
У меня никогда не было пользы для этого лично, но делегат Func был бы идеальным местом для его использования. Не было бы необходимости в 16 различных типах Func!
Итак, мой вопрос: это можно сделать каким-либо образом в С#, а , если нет, это глупая идея?