使用不同的参数将c#转换为vb.net基类覆盖函数

时间:2016-02-04 06:53:23

标签: c# asp.net vb.net overrides

我需要你的帮助才能将覆盖的函数从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#天才可以帮我转换吗?

1 个答案:

答案 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