嵌套泛型<T1 <T2 >>

Ale*_*nko 4 c# generics

为什么写这样的东西是不可能的:

T1<T2> Method<T1, T2>(T1<T2> genericValue) { ... }
Run Code Online (Sandbox Code Playgroud)

例如,我想编写一个扩展方法,它接受一个通用对象,包含一个通用的集合:

Container<CT<T>> ExtensionMethod<CT, T>(Container<CT<T>> value) { ... }
Run Code Online (Sandbox Code Playgroud)

其中CT可以是Array,List或任何其他集合类型,T是任何类型.但编译器说"类型参数T1没有类型参数".

那有什么解决方法吗?

nvo*_*igt 7

这是不可能的.你的泛型必须为任何编译.因此,如果您做出任何其他假设,那么您必须使用where关键字添加约束. TTobject

这种约束系统不是很复杂.您不能添加一个约束,要求T成为一个只有一个泛型类型参数的类.因此,使用当前工具集,您想要做的事情是不可能的.

你需要问微软他们为什么没有实现它,但看起来他们认为没有足够的商业价值.

也许你可以问一个如何实现某些东西的问题,而不是将其分解为泛型.看来你可能有一个XY问题.