任意对象拷贝 ObjectCopier

作者: Babybus_Unity | 来源:发表于2015-12-17 14:01 被阅读68次

Babybus-u3d技术交流-任意对象拷贝 ObjectCopier

     

 

using System;

using System.IO;

using System.Runtime.Serialization;

using System.Runtime.Serialization.Formatters.Binary;

 
/// <summary>

/// Reference Article http://www.codeproject.com/KB/tips/SerializedObjectCloner.aspx

/// Provides a method for performing a deep copy of an object.

/// Binary Serialization is used to perform the copy.

/// </summary>

public static class ObjectCopier
{

   /// <summary>

    /// Perform a deep Copy of the object.

    /// </summary>

    /// <typeparam name="T">The type of object being copied.</typeparam>

    /// <param name="source">The object instance to copy.</param>

    
/// <returns>The copied object.</returns>

    
public static T Clone<T>(this T source)

    {

        if (!typeof(T).IsSerializable)

        {

            throw new ArgumentException("The type must be serializable.", "source");

        }

 
        // Don't serialize a null object, simply return the default for that object

        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);
        }

    }
}

相关文章

  • 任意对象拷贝 ObjectCopier

    Babybus-u3d技术交流-任意对象拷贝 ObjectCopier

  • 小问题笔记

    深拷贝,浅拷贝 此问题针对于引用类型浅拷贝,拷贝(地址)完后,改变任意对象的值后,均改变深拷贝,拷贝完后,与前对象...

  • 对象深拷贝和浅拷贝

    深拷贝:复制对象整体,成为了一个独立对象整体,修改自己不影响其他对象浅拷贝:就是引用这个对象,修改任意一处的值,值...

  • Copy

    拷贝 产生一个副本对象,和原对象互不影响,修改了任意对象,不会影响另一个对象. copy和mutableCopy ...

  • Object.assign小问题

    概念 Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。...

  • Object.assign()

    1. Object.assign()方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。 ...

  • js的一些工具方法

    [obj判断类型:返回传递给他的任意对象的类] [数组及对象深拷贝] [列表排序:按元素的key] [consol...

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • Java-序列化—(三)序列化实现深拷贝

    浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象...

  • Objective-C中的深拷贝与浅拷贝

    一、概念 浅拷贝——只拷贝指向对象的指针,不拷贝引用对象本身。 深拷贝——拷贝引用对象本身。将对象obj,拷贝后得...

网友评论

    本文标题:任意对象拷贝 ObjectCopier

    本文链接:https://www.haomeiwen.com/subject/yalphttx.html