[英]c# cloning object to new variable
我有一个从数据库填充的类:
// original data
var dbData = this.GetOriginalData(ID);
然后,我想创建同一对象的新实例,可以在其中修改属性,但保持原样。
如果我做:
var newData = dbData;
newData.Text = "Sample";
然后,dbData.Text也被更改。
如何创建dbData实例,而无需创建新类并按属性传递属性,也可以不使用例如AutoMapper。
您可以使用Json序列化程序通过创建新对象并使用serialize / deserialize复制所有属性来克隆对象
public static T CloneJson<T>(this T source)
{
// Don't serialize a null object, simply return the default for that object
if (Object.ReferenceEquals(source, null))
{
return default(T);
}
// initialize inner objects individually
// for example in default constructor some list property initialized with some values,
// but in 'source' these items are cleaned -
// without ObjectCreationHandling.Replace default constructor values will be added to result
var deserializeSettings = new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Replace};
return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source), deserializeSettings);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.