Как копировать пользовательские свойства при создании клона

Я работаю над "DataGridView" в C# 3.5, в приложении "winforms".

У меня есть пользовательский столбец "MaskTextColumn", у меня есть некоторые пользовательские свойства, такие как: маска, "PromptChar" и т. Д.

Когда я делаю клон "MaskTextColumn", мои свойства клиента не копируются в новый объект, я хочу сделать клон в том виде, как он есть со значением пользовательского свойства.

2 ответа

Решение

Вам необходимо переопределить метод Clone в вашем пользовательском производном классе.

Что-то вроде этого:

public override object Clone() 
{
    var clonedColumn = base.Clone() as CustomColumn;
    clonedColumn.CustomProp = this.CustomProp;
    return clonedColumn;
}

Вы должны переопределить метод клонирования, чтобы включить ваши пользовательские свойства. Как говорится в этой ссылке,

При переопределении Clone ... обязательно скопируйте значения любых свойств, которые были добавлены в производный класс.

Код выглядит так:

public override Object Clone()
{
    object clonedObject = base.Clone();
    MaskTextColumn clonedColumn = clonedObject as MaskTextColumn;
    clonedColumn.PromptChar = this.PromptChar;
    // .. more property settings here
    return clonedColumn;
}
Другие вопросы по тегам