public static ILayer Clone(this ILayer layer) { if (layer is IPersistStream) { IObjectCopy objectCopy = new ObjectCopyClass(); object clone = objectCopy.Copy(layer); ILayer layerClone = clone as ILayer; return(layerClone); } if (layer is IPersistVariant) { // Create an XML Stream IXMLStream xmlStream = new XMLStreamClass(); IVariantStreamIO variantStreamIO = new VariantStreamIOClass() { Stream = (IStream)xmlStream }; // Save Layer to Stream IVariantStream variantStream = (IVariantStream)variantStreamIO; IPersistVariant save = (IPersistVariant)layer; save.Save(variantStream); // Move Seek Pointer to beginning of Stream xmlStream.Reset(); // Create New Layer ILayer newlayer = null; if (layer is IImageServerLayer) { newlayer = new ImageServerLayerClass(); } if (newlayer == null) { return(null); } // Create new Layer IPersistVariant load = (IPersistVariant)newlayer; load.Load(variantStream); // Return Cloned Layer return(newlayer); } return(null); }
public static ILayer Clone(this ILayer layer) { if (layer is IPersistStream) { IObjectCopy objectCopy = new ObjectCopyClass(); object clone = objectCopy.Copy(layer); ILayer layerClone = clone as ILayer; return layerClone; } if (layer is IPersistVariant) { // Create an XML Stream IXMLStream xmlStream = new XMLStreamClass(); IVariantStreamIO variantStreamIO = new VariantStreamIOClass() { Stream = (IStream)xmlStream }; // Save Layer to Stream IVariantStream variantStream = (IVariantStream)variantStreamIO; IPersistVariant save = (IPersistVariant)layer; save.Save(variantStream); // Move Seek Pointer to beginning of Stream xmlStream.Reset(); // Create New Layer ILayer newlayer = null; if (layer is IImageServerLayer) { newlayer = new ImageServerLayerClass(); } if (newlayer == null) { return null; } // Create new Layer IPersistVariant load = (IPersistVariant)newlayer; load.Load(variantStream); // Return Cloned Layer return newlayer; } return null; }