コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }