但当该函数不能修改,如是第三方组件中的类,或者因为其它原因,我们就被迫采取别的方法了。
如果碰巧对象实现了ISerializable,那么我们可以:





















































CloneObject和CloneObjectEx的区别在于:CloneObject返回的是强类型,但限制为指定的类型,不通用;后者通用,但性能要更加低。
或者显式采用反射来逐个获取对象的每个属性:
Base class for cloning an object in C#
如果对象连ISerializable都没有实现,那么我们只能:
How to serialize an object which is NOT marked as 'Serializable' using a surrogate
如果上述的方法都不满意,请你研究得出结果之后告诉我;)