为什么不可能写出这样的代码:
例如,我想编写一个扩展方法,接受一个包含通用集合的通用对象:
T1<T2> Method<T1, T2>(T1<T2> genericValue) { ... }
例如,我想编写一个扩展方法,接受一个包含通用集合的通用对象:
Container<CT<T>> ExtensionMethod<CT, T>(Container<CT<T>> value) { ... }
CT可以是数组、列表或任何其他集合类型,T可以是任何类型。但编译器会提示“类型参数T1没有类型参数”。
有没有什么解决方法?
Container<CT<T>> ExtensionMethod<CT, T>(Container<CT<T>> value) where CT : IEnumerable<T> { ... }
其中 CT : IEnumerable<T>,表示 CT 是实现了 IEnumerable<T> 接口的类型。
- bassfader