CloneObject

 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);
            }
        }
时间: 2024-10-10 12:49:49

CloneObject的相关文章

IFE 2015_spring task0002 自学记录

JavaScript数据类型及语言基础 1. 判断arr是不是一个数组,返回一个bool值. 首先javascript有5大基本数据类型:Undefined,Null,Boolean,Number和String(双无BNS) 还有一个引用数据类型:Object,它包括以下三大类: Native Object: JavaScript语言提供的不依赖于执行宿主的对象,其中一些是内建对象,如:Global.Math:一些是在脚本运行环境中创建来使用的,如:Array.Boolean.Date.Func

JQUERY省、市、县城市联动选择

JQUERY 插件开发——CITYLINKAGE(省.市.县城市联动选择) 第一部分:背景   开发源于需求,本次城市联动选择插件算是我写插件的一个特例吧,不是我目前工作需要些的,算是兴趣驱使吧.之前呢,一直想写这个插件,然后错过了一个写这个插件的机会(这个得回顾到很久以前了...此处省去N个字).然后最近“瘾”又犯了,呵呵,随手就拿这个“欠”了很久的插件开刀了.大家都应该知道“某宝”的这个插件写的还是很强大的,支持到街道(镇)级别...可见他们维护的前端数据有多大...不过呢,临渊羡鱼,不如退

设计模式在游戏中的应用--原型模式(六)

Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建. 上面是原型模式的UML结构图. 下面是原型模式的代码: #include "stdafx.h" #include <iostream> #include <string> using namespace s

Java学习笔记14

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中clone()方法是如何定义的: protected native Object clone() throws CloneNotSupportedException; 我们看到clone()方法前用了native来修饰,说明native方法的效率一般来说高于Java中的非native方法.其次用了 prote

ife2015-task2-4-5

task2-4.html<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin:0; padding:0 } #search_box{ margin:1% auto; width:300px; height:25px; border:1px solid

ife2015-task2-javascript-util.js

util.js/** * Created by Administrator on 2016/12/14. *///判断是否为数组function isArray(arr){ return (arr instanceof Array);} //判断是否为函数function isFunction(fn){ return (typeof(fn));} //深度克隆function cloneObject(src){ var result, //判断src的类型 oClass=isClass(src)

浅拷贝与深度拷贝(原型模式)

Delphi的VCL从TPersistent开始支持RTTI(RuntimeTypeInfo)运行时类型信息,它是通过{$M+}编译指令提供了RTTI的功能.M打开以后,Delphi在编译该对象时,会把对象的类型信息编译进可执行文件,这样在运行时就可以动态地获得对象的属性和方法等信息.因为所有的VCL可视化组件都是从TPersistent派生的,因此可以将组件信息保存到dfm也可以动态加载. Delphi还定义了一个虚方法Assign, [delphi] view plain copy proc

DevExpress 15.1.sln

1 Microsoft Visual Studio Solution File, Format Version 12.00 2 # Visual Studio 14 3 VisualStudioVersion = 14.0.23107.0 4 MinimumVisualStudioVersion = 10.0.40219.1 5 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevExpress.BonusSkins

JavaScript -- Interview

(1)JavaScript包括哪些数据类型? 1.未定义(undefined) 2.空(null) 3.布尔(boolean) 4.字符串(string) 5.数字(number) 6.对象(object) 7.引用(reference) 8.列表(list) 9.完成(completion) reference,list,completion这3种类型是做为JavaScript运行时中间结果的数据类型 在代码中不能使用. (2)border-color-left.marin-left.-moz