Tôi đã gặp một đại biểu xinh đẹp Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
trong C# .NET 4.5 ngay hôm nay. Tôi giả định 16 là một nơi tùy ý để dừng lại (phương thức nào có hơn 16 tham số?) Nhưng nó khiến tôi suy nghĩ: là có thể trong C# để xác định rằng một kiểu generic có thể có bất kỳ số đối số kiểu nào không? theo cách tương tự mà từ khóa params cho các phương thức cho phép bất kỳ số đối số nào cho một phương thức. Một cái gì đó như thế này:Sử dụng từ khóa "params" cho các tham số chung trong C#
public class MyInfiniteGenericType<params T[]> { ... }
nơi bên trong lớp sau đó bạn có thể truy cập vào các đối số loại bằng cách liệt kê qua chúng hoặc sử dụng T[index]
trong cùng một cách mà params
phép trong phương pháp.
Tôi chưa từng sử dụng cá nhân này, nhưng đại biểu Func sẽ là nơi hoàn hảo để sử dụng nó. Sẽ không cần đến 16 loại Func khác nhau!
Vì vậy, câu hỏi của tôi là, điều này có thể được thực hiện theo bất kỳ cách nào trong C# và nếu không phải là ý tưởng ngớ ngẩn này?
Thảo luận liên tục ở nơi khác trên SO: http://stackoverflow.com/a/4046525/63225 – sblom