我作为一般功能的儿童类型

时间:2010-04-15 20:13:03

标签: vb.net inheritance polymorphism

我有一个MustInherit Parent类,它有两个从Parent继承的Child类。

如何在Parent函数中使用(或Cast)Me作为该实例的子类型?

编辑:我的目标是能够序列化(BinaryFormatter.Serialize(Stream, Object))我的子课程。但是,每个孩子的“重复代码”似乎“错误”。

EDIT2:这是我的序列化功能。我应该在哪里实现这个功能?复制和粘贴给每个孩子看起来似乎不对,但将父母送给孩子似乎也不对。

Public Function Serialize() As Byte()
    Dim bFmt As New BinaryFormatter()
    Dim mStr As New MemoryStream()

    bFmt.Serialize(mStr, Me)

    Return mStr.ToArray()
End Function

1 个答案:

答案 0 :(得分:0)

回答你的问题:正如你要施放普通物体一样:

If TypeOf Me Is ChildClass1 Then
    Dim x As ChildClass1 = DirectCast(Me, ChildClass1)
    ....
End If

但是,在Parent的代码中进行此类演员被视为非常糟糕的做法。请看一下Template pattern,它可能更适合你需要的东西,它比做这样的演员阵容更清晰。