您好我正在尝试克隆一个有成员列表对象的对象
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;
}
我已经这样做了,我没有得到克隆对象中的值&#39; b&#39;这是在原始对象&#39; a&#39;。任何帮助?我对这种克隆机制有点新意。
答案 0 :(得分:0)
您想克隆容器类,因此您也需要在其上实现ICloneable(GrossTemplatesInfo)。
处理GrossTemplates类,有三种可能性:
1,手动完成:
public object Clone()
{
return new GrossTemplates()
{
tempId = this.tempId,
PreferenceName = this.PreferenceName,
PreferenceValue = this.PreferenceValue,
IsDefault = this.IsDefault
};
}
2,使用通用助手作为描述here(参见@Uriil评论)
3,重新思考整个背景(或向我们解释)和do not copy instances
如果适用,3是可行的方法。