как копировать пользовательские свойства при создании клона - PullRequest
1 голос
/ 24 марта 2012

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

У меня есть настраиваемый столбец «MaskTextColumn», в нем есть некоторые настраиваемые свойства, такие как: Mask, «PromptChar»и т. д.

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

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

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

Примерно так:

public override object Clone() 
{
    var clonedColumn = base.Clone() as CustomColumn;
    clonedColumn.CustomProp = this.CustomProp;
    return clonedColumn;
}
2 голосов
/ 24 марта 2012

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

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

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

public override Object Clone()
{
    object clonedObject = base.Clone();
    MaskTextColumn clonedColumn = clonedObject as MaskTextColumn;
    clonedColumn.PromptChar = this.PromptChar;
    // .. more property settings here
    return clonedColumn;
}
...