Note - Tips - Trick - .Net

Lưu các thủ thuật, code mẫu, cách dùng về .Net

Clone bất kỳ object nào - Không cần phải Serialize được Clone bất kỳ object nào - Không cần phải Serialize được Clone bất kỳ object nào - Không cần phải Serialize được Clone bất kỳ object nào - Không cần phải Serialize được Clone bất kỳ object nào - Không cần phải Serialize được 0/5 (13 reviews)

Clone bất kỳ object nào - Không cần phải Serialize được

Đã đăng 2018-07-10 18:52:43 bởi K9
0 bình luận 1509 lượt xem
Clone bất kỳ object nào - Không cần phải Serialize được 0 /5 stars (0 reviews)
 

 

Sẽ có nhiều bạn vất vả khi cố gắn clone một đối tượng nào đó khi nó không có hàm hỗ trợ sẵn. Phải tự viết hàm clone từng thuộc tính ư. @@. Hãy thử dùng hàm dưới đây và donate cho Kteam khi nó giúp bạn tiết kiệm thời gian nhé.

 

Dùng nuget NewtonJson

 

class ObjectCopier.cs

 public static class ObjectCopier
    {       
        public static T Clone<T>(this T source)
        {
            if (Object.ReferenceEquals(source, null))
            {
                return default(T);
            }
           
            var deserializeSettings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace };

            return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source), deserializeSettings);
        }

/*Nếu cần tốc độ cao và performance cao. Nhưng object phải serialize được*/

//if (!typeof(T).IsSerializable)
            //{
            //    throw new ArgumentException("The type must be serializable.", "source");
            //}

            //if (Object.ReferenceEquals(source, null))
            //{
            //    return default(T);
            //}

            //IFormatter formatter = new BinaryFormatter();
            //Stream stream = new MemoryStream();
            //using (stream)
            //{
            //    formatter.Serialize(stream, source);
            //    stream.Seek(0, SeekOrigin.Begin);
            //    return (T)formatter.Deserialize(stream);
            //}

    }

 

Cách dùng

var data = ObjectCopier.Clone(pp);

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education