Я как тип ребенка в общей функции - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть MustInherit родительский класс с двумя дочерними классами, которые наследуются от родительского.

Как я могу использовать (или приведение) 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 голосов
/ 16 апреля 2010

Чтобы ответить на ваш вопрос: так же, как вы бы разыграли обычный объект:

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

Тем не менее, выполнение такого приведения в коде Parent считается очень плохой практикой. Пожалуйста, взгляните на шаблон Template , он может быть более подходящим для того, что вам нужно, и он намного чище, чем делать такое приведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...