扩展方法'<methodname>'具有永远无法满足的类型约束

更新:2007 年 11 月

此方法的类型参数以一种阻止其得以满足的方式进行交互。下面的扩展方法是一个示例。

'' Not valid.
'<Extension()> _
'Sub extensionExample(Of T As U, U)(ByVal para1 As T, ByVal para2 As U)
'End Sub

由于该方法是扩展方法,因此编译器必须能够仅根据方法声明中的第一个形参 para1 以及为该形参传入的实参来确定该方法所扩展的数据类型。当第一个形参引用泛型类型形参(para1 as T)时,这些泛型形参上的约束将限制该方法所适用的类型集。

扩展方法的适用性取决于为第一个形参(在下面的代码中为 arg1)提供的实参。

'' Not valid.

'arg1.extensionExample(arg2)

通过只查看第一个实参 arg1,必须能够验证第一个形参 para1 所引用的所有泛型类型形参上的约束。在 extensionExample 中,正在扩展的类型集不能只取决于第一个参数。类型参数 T 受类型参数 U 的约束,后者未被 para1 引用,且无法从 arg1 中推断。因此,无法验证该方法是否适用于任何可能的类型,并且永远不能调用该方法。

**错误 ID:**BC36561

更正此错误

  • 更改类型声明,以消除类型之间的相互依赖关系。

请参见

概念

扩展方法 (Visual Basic)

Visual Basic 中的泛型类型