如何克隆一个列表对象

本文关键字:一个 列表 对象 何克隆 | 更新日期: 2023-09-27 18:12:00

嗨,我正在尝试克隆一个具有成员列表对象的对象

 public class GrossTemplatesInfo
{
    public List<GrossTemplates> grossTemplates { get; set; }
    public object Clone()
    {
        GrossTemplatesInfo other = (GrossTemplatesInfo)this.MemberwiseClone();
        other.grossTemplates = new List<GrossTemplates>(grossTemplates);
        return other;
    }
}
public class GrossTemplates : ICloneable
{
    public string tempID { get; set; }
    public string PreferenceName { get; set; }
    public string PreferenceValue { get; set; }
    public bool isDefault { get; set; } 
    object ICloneable.Clone()
    {
        return this.Clone();
    }
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}

我的方法是这样的

public static GrossTemplatesInfo LoadInitialdata(string caseType)
    {
        GrossTemplatesInfo a = new GrossTemplatesInfo();
       GrossTemplatesInfo b = a.Clone() as GrossTemplatesInfo; 
    }

我已经这样做了,我没有得到克隆对象'b'中的值,这些值在原始对象'a'中。任何帮助吗?我对这种克隆机制有点陌生。

如何克隆一个列表对象

你想克隆你的容器类,所以你需要在它上面实现iclonable (GrossTemplatesInfo)。

处理GrossTemplates类,三种可能性:

1、手动操作:

public object Clone()
{
    return new GrossTemplates()
    {
        tempId = this.tempId,
        PreferenceName = this.PreferenceName,
        PreferenceValue = this.PreferenceValue,
        IsDefault = this.IsDefault
    };
}

2、使用这里描述的通用帮助器(参见@ uiil注释)

3、重新考虑整个上下文(或向我们解释),不要复制实例