繁体   English   中英

C#将对象克隆到新变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM