我想创建一个基类,可以继承和用于雏菊链调用,但我需要返回的对象是派生类。从基类返回派生类实例
考虑:
Public Class MyElement
Public Function SetAttribute(name As String, value As String) As MyElement
// Set the attribute
Return Me
End Function
End Class
Public Class ExtendedElement
Inherits MyElement
Public Sub DoSomething()
// Code to do something
End Sub
End Class
// What I would like to achieve
Dim my_var As New ExtendedElement
my_var.
SetAttribute("FirstName", "Bob").
SetAttribute("LastName", "Builder").
DoSomething()
是这种事情可能吗?
你想要什么是不可能的。除非使其通用,否则“SetAttribute”方法的类型固定为基类。该对象仍然是派生类,因此您可以将返回值作为派生类型进行强制转换,但必须在调用的某处指定派生类型,即泛型类型参数或强制类型。 – jmcilhinney
另一种方法是在基类中声明'DoSomething'方法,或者是MustOverride或者默认实现,然后在每个派生类中重写它。当然,除非'DoSomething'在逻辑上应该是每个派生类的成员,否则这是不可行的。 – jmcilhinney