我想向 System.IO.Path 类添加一个函数。
问题是路径是不可继承的。
所以这样做是不可能的:
Imports System.IO
Public Class Path : Inherits System.IO.Path
End Class
您可以使用扩展方法。这些似乎是扩展类的功能,但它们之间没有真正的联系。不过,它们确实使编程更加方便。
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
。
问题不在于继承一个“系统”类,而是一个类NonInheritable
,这是设计的,顾名思义,是不可继承的。
你为什么要继承它呢?您扩展(继承)一个类以便为其实例添加行为。在 Path 没有实例的情况下,Path 只是一个“容器”,用于对处理文件系统路径操作的类似方法进行分组。
您应该做的是为您的其他方法或您自己的 NotInheritable 类创建一个模块。