我需要你的帮助才能将覆盖的函数从c#转换为vb.net。这是故事:
c#代码有一个名为TreeViewerDataProviderBase的基类,其函数存根如下:
Protected Overridable Function CreateTreeNode(parentNode As TreeNodePath, text As String, path As String, isFile As Boolean, addDummyNode As Boolean, isSpecialFolder As Boolean) As TreeNodePath
另一个类是TreeViewerDataProviderBase的子类,并使用此存根覆盖基本函数:
protected virtual TreeNodePath CreateTreeNode(System.Windows.Forms.TreeNodeCollection parentCollection, TreeNodePath parentNode, Datomp.Win32.ShellItem shellItem)
正如您所看到的,基本函数和覆盖函数具有相同的前2个参数,但其余参数不同。
当我尝试将其转换为vb.net时,我得到:
Protected Overridable Function CreateTreeNode(parentCollection As System.Windows.Forms.TreeNodeCollection, parentNode As TreeNodePath, shellItem As DotNetParts.Win32.ShellItem) As TreeNodePath
这给了我一个错误,CreateTreeNode会覆盖基类中的方法,并且必须声明为'覆盖'。
但是,当我将它从Overridable更改为Overrides时,我得到另一个错误,它不会覆盖基类中的方法!这是鸡和蛋的问题。
我是一个c#家伙,所以我不明白为什么这不好。如果我尝试删除Overrides,我会得到另一个错误,它会覆盖基类函数!的Ack。
有些VB.NET / C#天才可以帮我转换吗?
答案 0 :(得分:1)
我解决了问题,正如Sam Axe所述,并用Overridable
Overloads
所以这个:
Protected Overridable Function CreateTreeNode(parentCollection As System.Windows.Forms.TreeNodeCollection, parentNode As TreeNodePath, shellItem As DotNetParts.Win32.ShellItem) As TreeNodePath
成为这个:
Protected Overloads Function CreateTreeNode(parentCollection As System.Windows.Forms.TreeNodeCollection, parentNode As TreeNodePath, shellItem As DotNetParts.Win32.ShellItem) As TreeNodePath