public void SyncMapObject(IMap pSourceMap, ref IMap pTargetMap, bool bClearElements) { try { if ((pSourceMap != null) && (pTargetMap != null)) { IObjectCopy copy = null; copy = new ObjectCopyClass(); object pInObject = null; pInObject = pSourceMap; object obj3 = null; obj3 = copy.Copy(pInObject); object pOverwriteObject = null; pOverwriteObject = pTargetMap; copy.Overwrite(obj3, ref pOverwriteObject); IActiveView view = pTargetMap as IActiveView; IGraphicsContainer graphicsContainer = view.GraphicsContainer; if (graphicsContainer != null) { IViewManager manager = view as IViewManager; ISelection elementSelection = manager.ElementSelection; view.Selection = elementSelection; } if (bClearElements) { graphicsContainer.DeleteAllElements(); } } } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.CoreFun", "SyncMapObject", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); } }
public void SyncPageLayoutObject(IPageLayout pSourcePage, ref IPageLayout pTargetPage) { try { if ((pSourcePage != null) && (pTargetPage != null)) { IObjectCopy copy = null; copy = new ObjectCopyClass(); object pInObject = null; pInObject = pSourcePage; object obj3 = null; obj3 = copy.Copy(pInObject); object pOverwriteObject = null; pOverwriteObject = pTargetPage; copy.Overwrite(obj3, ref pOverwriteObject); IActiveView view = pTargetPage as IActiveView; if (view.GraphicsContainer != null) { IViewManager manager = view as IViewManager; ISelection elementSelection = manager.ElementSelection; view.Selection = elementSelection; } } } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.CoreFun", "SyncPageLayoutObject", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); } }
/// <summary> /// 深层拷贝一个实例对象。 /// </summary> /// <typeparam name="TObject">带序列化的目标类</typeparam> /// <param name="obj">目标类的一个实例对象。</param> /// <param name="copyAction">深层拷贝对象的方式:<c>null</c> = 二进制拷贝方式(必须标记 Serializable 特性,或者实现 ISerializable 接口)。</param> /// <returns>深层克隆的一个目标类的实例对象。</returns> public static TObject Copy <TObject>(this TObject obj, IObjectCopy copyAction = null) where TObject : class { if (ReferenceEquals(obj, null)) { return(obj); } if (ReferenceEquals(copyAction, null)) { copyAction = new BinaryObjectCopy { ObjectType = typeof(TObject) } } ; else { copyAction.ObjectType = typeof(TObject); } using (var stream = copyAction.Serialize(obj)) { stream.Seek(0, SeekOrigin.Begin); return((TObject)copyAction.Deserialize(stream)); } }