我在网上发现了一些C#代码。我使用telerik代码转换器转换为VB.net。我收到以下代码的错误
已关闭已声明为' public甚至已关闭(发件人为对象,e为System.EventArgs)'在这堂课上。
同样的错误也适用于所示。任何人都有一些想法要解决?
language: objective-c
osx_image: xcode7.2
xcode_workspace: VirtualGameController.xcworkspace
xcode_scheme:
- VirtualGameControllerIOS
- VirtualGameControllerOSX
- VirtualGameControllerTvOS
- VirtualGameControllerWatchOS
xcode_sdk:
- iphonesimulator9.2
- macosx10.11
- tvos9.0
- watchos2.0
matrix:
exclude:
- xcode_scheme: VirtualGameControllerIOS
xcode_sdk: macosx10.11
- xcode_scheme: VirtualGameControllerIOS
xcode_sdk: tvos9.0
- xcode_scheme: VirtualGameControllerIOS
xcode_sdk: watchos2.0
- xcode_scheme: VirtualGameControllerOSX
xcode_sdk: iphonesimulator9.2
- xcode_scheme: VirtualGameControllerOSX
xcode_sdk: tvos9.0
- xcode_scheme: VirtualGameControllerOSX
xcode_sdk: watchos2.0
- xcode_scheme: VirtualGameControllerTvOS
xcode_sdk: macosx10.11
- xcode_scheme: VirtualGameControllerTvOS
xcode_sdk: tvos9.0
- xcode_scheme: VirtualGameControllerTvOS
xcode_sdk: watchos2.0
- xcode_scheme: VirtualGameControllerWatchOS
xcode_sdk: iphonesimulator9.2
- xcode_scheme: VirtualGameControllerWatchOS
xcode_sdk: tvos9.0
- xcode_scheme: VirtualGameControllerWatchOS
xcode_sdk: watchos2.0
这是我转换为VB的C#代码。
#Region "Events"
Public Event Closed As EventHandler
Public Event Shown As EventHandler
Protected Overridable Sub closed(e As EventArgs)
Dim handler As EventHandler = Closed
RaiseEvent handler(Me, e)
End Sub
Protected Overridable Sub shown(e As EventArgs)
Dim handler As EventHandler = Shown
RaiseEvent handler(Me, e)
End Sub
#End Region
答案 0 :(得分:2)
在我看来,这是因为VB.NET is case insensitive意味着项目shown
等同于项目Shown
这一事实的结果。
您可以通过重命名(更好地使用某些重构工具)其中一个事件来解决问题,这样就不会出现名称冲突。您在C#项目级别更好地执行此操作,然后再次运行转换编译器工具以生成等效的VB.NET代码。
答案 1 :(得分:1)
这里有两个问题。
首先,如果您使用的是WinForms,System.Windows.Forms
已经有Closed
事件与您正在创建的事件冲突。因此,如果打算使用阴影,则必须通过声明Shadows
来影响事件。但是如果你在正常的课堂上宣布这一点(它不是从Form
派生出来的话)你就不用担心了。
Public Shadows Event Closed As EventHandler
Public Shadows Event Shown As EventHandler
其次,属性名称和事件名称不能相同。 Vb.Net在这个问题上不区分大小写。因此,您应该按如下方式重构名称。
Public Event Closed As EventHandler
Public Event Shown As EventHandler
Protected Overridable Sub whenClosed(ByVal e As EventArgs)
RaiseEvent Closed(Me, e)
End Sub
Protected Overridable Sub whenShown(ByVal e As EventArgs)
RaiseEvent Shown(Me, e)
End Sub