如何在制作克隆时复制自定义属性



我正在C#3.5的"winforms"应用程序中开发"DataGridView"。

我有一个自定义列是"MaskTextColumn",我在其中有一些自定义属性,比如:Mask,"PromptChar"等

当我克隆"MaskTextColumn"时,我的客户属性没有复制到新对象,我想用自定义属性值原样进行克隆。

您需要覆盖自定义派生类中的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;
}

最新更新