Ejemplo n.º 1
0
        public static T Clone <T>(this T e)
            where T : RoutedEventArgs
        {
            var clonedEvent = (T)MemberwiseCloneMethod.Invoke(e, null);

            return(clonedEvent);
        }
        /// <summary>
        /// 创建当前 Object 的浅表副本。同 Object.MemberwiseClone 方法。
        /// 该方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。
        /// 如果字段是值类型的,则对该字段执行逐位复制。 如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。
        /// </summary>
        /// <param name="_this">要执行复制操作的对象。</param>
        /// <returns></returns>
        public static TSource Clone <TSource>(this TSource _this)
        {
            if (_this == null)
            {
                return(default(TSource));
            }

            if (_this.GetType().IsValueType)
            {
                return(_this);
            }

            return((TSource)MemberwiseCloneMethod.Invoke(_this, null));
        }