Как копировать пользовательские свойства при создании клона
Я работаю над "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;
}