为什么写这样的东西是不可能的:
T1<T2> Method<T1, T2>(T1<T2> genericValue) { ... }
例如,我想编写一个扩展方法,它接受一个通用对象,包含一个通用的集合:
Container<CT<T>> ExtensionMethod<CT, T>(Container<CT<T>> value) { ... }
其中CT可以是Array,List或任何其他集合类型,T是任何类型。但编译器说&#34;类型参数T1没有类型参数&#34;。
有没有解决办法?
答案 0 :(得分:7)
这是不可能的。您的通用必须编译 任何 T
。因此,如果您对T
进行任何假设而不是object
,则必须使用where关键字添加约束。
这种约束系统不是很复杂。您无法添加约束,要求T
成为只有一个泛型类型参数的类。所以使用当前的工具集你不想做什么。
您需要询问Microsoft 为什么他们没有实现它,但看起来他们认为没有足够的商业价值。
也许你可以提出一个问题如何来实现某些东西,而不是将其分解为泛型。看来你可能有XY Problem。