【发布时间】:2017-11-06 17:36:42
【问题描述】:
我有一个名为 ParentClass 的 MustInherit 类。 我需要能够在不同的地方写以下内容:
Function TheThing(Of T As ParentClass)(s As String) As ParentClass
Return New T(s)
End Function
因此我会写
MustInherit Class ParentClass
MustOverride Sub New(s As String)
End Class
Class Class_Daughter1
Inherits ParentClass
Overrides Sub New(s As String)
'do whatever
End Sub
End Class
确实:
- 如果我没有声明 MustOverride sub new(s as string) ,那么函数 TheThing 不知道任何从 ParentClass 派生的类确实有一个 sub new(s as string)
- 如果我确实添加了它,那么它说 new 不能被必须覆盖
有没有办法做到这一点?我尝试使用工具,但也没有成功...
PS:如果我只是使用
Function TheThing(Of T As ParentClass)(s As String) As ParentClass
dim a as new T()
Return a
End Function
新的行也不行
PS2:这也是不允许的:
Function TheThing(Of T As {ParentClass, iCreatable})(s As String) As ParentClass
Return New T(s)
End Function
Interface iCreatable
Sub New() '===> not allowed in interface
End Interface
【问题讨论】:
标签: vb.net overriding