1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClass mcOriginal = new MyClass { Name = "Original" };
MyClass mcDeepCopy = null;
// Deep copy des Objekts. So wird kein Zeiger auf das
// alte Objekt gespeichert -> sondern eine neue
// unabhängige Instanz erzeugt:
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter fmt = new BinaryFormatter();
// Original serialisieren:
fmt.Serialize(ms, mcOriginal);
// Position des Streams auf den Anfang zurücksetzen:
ms.Position = 0;
// Kopie erstellen:
mcDeepCopy = fmt.Deserialize(ms) as MyClass;
}
mcDeepCopy.Name = "Kopie";
// Ausgabe:
Console.WriteLine("mc1: " + mcOriginal.Name);
Console.WriteLine("mc2: " + mcDeepCopy.Name);
Console.ReadKey();
}
}
[Serializable()]
public class MyClass
{
public string Name { get; set; }
}
}
|