0

我想向 System.IO.Path 类添加一个函数。

问题是路径是不可继承的。

所以这样做是不可能的:

Imports System.IO

Public Class Path : Inherits System.IO.Path

End Class
4

2 回答 2

1

您可以使用扩展方法。这些似乎是扩展类的功能,但它们之间没有真正的联系。不过,它们确实使编程更加方便。
http://msdn.microsoft.com/en-us/library/bb384936.aspx

更新:让我们看一个例子。请注意,这些是来自 3 个文件的片段。

'Noninheritable baseclass
Public NotInheritable Class BaseClass
    Function f()
        Return 42
    End Function
End Class

'Extension
Imports System.Runtime.CompilerServices
Module ExtModule
    <Extension()>
    Public Sub Print(ByVal bc As BaseClass)
        Console.WriteLine(bc.f())
    End Sub
End Module

'Usage
Sub Main()
    Dim bc As BaseClass
    bc = New BaseClass()
    bc.Print() 'Calling the extension method
End Sub

它说42

于 2013-08-18T11:54:50.877 回答
0

问题不在于继承一个“系统”类,而是一个类NonInheritable,这是设计的,顾名思义,是不可继承的。

你为什么要继承它呢?您扩展(继承)一个类以便为其实例添加行为。在 Path 没有实例的情况下,Path 只是一个“容器”,用于对处理文件系统路径操作的类似方法进行分组。

您应该做的是为您的其他方法或您自己的 NotInheritable 类创建一个模块。

于 2013-08-18T11:04:13.373 回答