Всегда переопределять функцию с другим типом возврата - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть класс MustInherit с именем ViewerElement, из которого производные классы, такие как ViewerLine, ViewerImage и т. Д.

Затем в основной программе у меня есть коллекция различных элементов (Изображения, Линии и т. Д.).Я хочу сделать что-то вроде следующего:

Dim NewElement As ViewerElement
For Each Element As ViewerElement In Elements
    If blabla Then
        NewElement = Element.Clone()
        Exit For
    End If
Next
Elements.Add(NewElement)

Я отчаянно пытаюсь реализовать этот метод Clone без ошибок.Как это должно быть сделано?

Большое спасибо заранее.

1 Ответ

2 голосов
/ 08 ноября 2011

Вы должны заставить ViewerElement реализовать IClonable интерфейс.
Затем в методе Clone() вы должны создать новый объект ViewerElement, копирующий все значения свойств (или изменяющий их в соответствии с вашими потребностями).
Clone() метод должен возвращать объект, который может быть приведен с вашим типом;тогда вам решать, какие значения принимают свойства, у wchis status есть все внутренние переменные.

Пример (написанный на C #)

public class ViewerElement : ICloneable
{
    private int a = 0;
    private string b = "";

    public ViewerElement(int a, string b)
    {
        this.a = a;
        this.b = b;
    }

    public object Clone()
    {
        return new ViewerElement(a, b);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...