示例#1
0
        // ''' <summary>
        // ''' Creates a full copy (deep clone) of this instance.
        // ''' </summary>
        // ''' <typeparam name="bbType"></typeparam>
        // ''' <returns></returns>
        // ''' <remarks></remarks>
        public bbType DeepClone <bbType>()
        {
            MemoryStream memStream    = new MemoryStream();
            bbType       clonedObject = default(bbType);

            //Als JSon in den Speicher serialisieren
            try
            {
                SerializeToStream(memStream);
            }
            catch
            {
                throw;
            }

            //Die Kopie wieder zurückserialisieren.
            try
            {
                memStream.Seek(0, SeekOrigin.Begin);
                clonedObject = (bbType)DeserializeFromStream(memStream);
            }
            catch
            {
                throw;
            }

            return(clonedObject);
        }
示例#2
0
        // ''' <summary>
        // ''' Erstellt eine vollständige Kopie (deep clone) dieser Instanz.
        // ''' </summary>
        // ''' <typeparam name="bbType"></typeparam>
        // ''' <returns></returns>
        // ''' <remarks></remarks>
        public bbType DeepClone <bbType>()
        {
            MemoryStream memStream    = new MemoryStream();
            var          js           = new System.Runtime.Serialization.Json.DataContractJsonSerializer(this.GetType(), TypeDetector.GetTypes(this));
            bbType       clonedObject = default(bbType);

            //Als JSon in den Speicher serialisieren
            try
            {
                js.WriteObject(memStream, this);
            }
            catch
            {
                throw;
            }

            //Die Kopie wieder zurückserialisieren.
            try
            {
                memStream.Seek(0, SeekOrigin.Begin);
                clonedObject = (bbType)js.ReadObject(memStream);
            }
            catch
            {
                throw;
            }

            return(clonedObject);
        }