23 lines
		
	
	
		
			699 B
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			699 B
		
	
	
	
		
			C#
		
	
	
using Newtonsoft.Json;
 | 
						|
using System;
 | 
						|
 | 
						|
namespace IRaCIS.Core.Infrastructure.Extention
 | 
						|
{
 | 
						|
    public static class CloneExtension
 | 
						|
    {
 | 
						|
 | 
						|
		public static T Clone<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);
 | 
						|
			}
 | 
						|
 | 
						|
			var deserializeSettings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace };
 | 
						|
			var serializeSettings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
 | 
						|
			return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source, serializeSettings), deserializeSettings);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |