C# deep copy ioptions code example
Example: use newtonsoft json to clone object
public static T Clone<T>(T source)
{
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings() {
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All
};
var serialized = JsonConvert.SerializeObject(source, jsonSettings);
return JsonConvert.DeserializeObject<T>(serialized, jsonSettings);
}
public static class SystemExtension
{
public static T Clone<T>(this T source)
{
var jsonSettings = new Newtonsoft.Json.JsonSerializerSettings() {
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All
};
var serialized = JsonConvert.SerializeObject(source, jsonSettings);
return JsonConvert.DeserializeObject<T>(serialized, jsonSettings);
}
}