Vb.net 签名为(T作为类的)的类方法的正确接口(实现)语法
我很难找到正确的接口或方法的实际实现签名/语法。方法本身按预期工作,编译器至少不会抱怨接口的语法,但当实际向方法添加必要的Implements语句时,它失败了 以下是我所拥有的:Vb.net 签名为(T作为类的)的类方法的正确接口(实现)语法,vb.net,interface,Vb.net,Interface,我很难找到正确的接口或方法的实际实现签名/语法。方法本身按预期工作,编译器至少不会抱怨接口的语法,但当实际向方法添加必要的Implements语句时,它失败了 以下是我所拥有的: Public Interface IMyInterface Function GetIt(Of T As Class)() As T End Interface Public Class Foo Implements IMyInterFace Public Function GetIt(Of T
Public Interface IMyInterface
Function GetIt(Of T As Class)() As T
End Interface
Public Class Foo
Implements IMyInterFace
Public Function GetIt(Of T As Class)() As T
End Class
如果我现在尝试添加必要的Implements语句,即使使用IntelliSense弹出窗口中的自动完成,VS也会抱怨语法。如果没有Implements语句,VS会抱怨:
BC30149类“Foo”必须实现“函数GetIt(属于T As
类()作为接口“IMyInterface”的“T”
首先,使用“自动完成”进行此操作会导致以下不完整的行:
Public Function GetIt(Of T As Class)() As T Implements IMyInterface.GetIt(Of
VS显然抱怨a)
“预期类型”
及(二)
")"预期"
第二,在完成这一行之后
Public Function GetIt(Of T As Class)() As T Implements IMyInterface.GetIt(T As class) As T
VS静止报告
")"预期"
并指向参数定义“As Class”中的“A”
那么,这种方法签名的正确语法是什么呢?,因此您无法命名该类
您可以在VB.NET中关闭方括号中的关键字以避免出现这种情况
Public Interface IMyInterface
Function GetIt(Of T As Class)() As T
End Interface
Public Class [MyClass]
Implements IMyInterface
Public Function GetIt(Of T As Class)() As T Implements IMyInterface.GetIt
Throw New NotImplementedException()
End Function
End Class
但由于这只是一个概念证明,您的实际实现可能不会受到这个问题的影响
顺便说一下,我投票结束你的问题,因为这更像是一个关于使用
MyClass
作为类名的问题。如果您没有这样做,您的自动完成肯定会生成正确的方法签名。相反,您的IDE被放错的关键字弄糊涂了。我希望这有助于你解决问题你们都是对的,解决办法是
Public Function GetIt(Of T As Class)() As T Implements IMyInterface.GetIt
我还想到让VS进行重构(编辑->重构->提取接口),上面就是VS这样做的。我仍然觉得奇怪的是VS(2017)的自动完成产生了一个不同的结果。我的自动完成是这样做的:公共函数GetIt(作为类的T)作为T实现IMyInterface.GetItMy bad。我只是在这个示例代码中使用了“MyClass”,没有记住它是一个关键字。实际的类具有不同的名称。我已经更新了我的帖子以避免这种混乱。