/
appdomain2.cs
73 lines (55 loc) · 1.41 KB
/
appdomain2.cs
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.IO;
using System.Security.Policy;
using System.Threading;
using System.Runtime.Serialization;
class Container {
[Serializable]
public struct c2 : ISerializable {
public int a;
public string s1;
private c2 (SerializationInfo info, StreamingContext context) {
a = info.GetInt32("a");
s1 = info.GetString("s1");
}
public void GetObjectData (SerializationInfo info, StreamingContext context) {
info.AddValue ("a", a);
if (s1 != null)
info.AddValue ("s1", s1);
else
info.AddValue ("s1", "(null)");
}
}
[Serializable]
public class c1 {
public int a = 1;
public int b = 2;
public string s1 = "TEST1";
[NonSerialized] public string s2 = "TEST2";
public c2 e1;
}
static int Main ()
{
Console.WriteLine ("Friendly name: " + AppDomain.CurrentDomain.FriendlyName);
AppDomainSetup setup = new AppDomainSetup ();
setup.ApplicationBase = Directory.GetCurrentDirectory ();
AppDomain newDomain = AppDomain.CreateDomain ("NewDomain", null, setup);
c1 a1 = new c1 ();
a1.e1.a = 3;
a1.e1.s1 = "SS";
newDomain.SetData ("TEST", a1);
c1 r1 = (c1)newDomain.GetData ("TEST");
if (r1.a != 1 || r1.b !=2)
return 1;
if (r1.s1 != "TEST1")
return 2;
if (r1.s2 != null)
return 3;
if (r1.e1.a != 3)
return 4;
if (r1.e1.s1 != "SS")
return 5;
Console.WriteLine("test-ok");
return 0;
}
}