1using System;
2
3namespace ActivatorDemo
4{
5 class Demo
6 {
7
8 [System.Runtime.InteropServices.DllImport("msvcrt.dll")]
9 static extern bool system(string str);
10
11 [STAThread]
12 static void Main(string[] args)
13 {
14
15 object team = null;
16
17 {
18 object[] members = (object[])Array.CreateInstance(System.Reflection.Assembly.Load("ActivatorDemo").GetType("ActivatorDemo.Member"),3);
19 members[0] = CreateInstance("ActivatorDemo","ActivatorDemo.Member",new object[]{"Bill","PL"});
20 members[1] = CreateInstance("ActivatorDemo","ActivatorDemo.Member",new object[]{"Mike","SE"});
21 members[2] = CreateInstance("ActivatorDemo","ActivatorDemo.Member",new object[]{"Gary","JE"});
22
23 team = CreateInstance("ActivatorDemo","ActivatorDemo.Team",new object[]{members});
24 }
25
26 {
27 //Get 'Members' Property Value
28 System.Reflection.PropertyInfo membersInfo = GetPropertyInfo(team.GetType(),"Members",System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
29 object[] members = membersInfo.GetValue(team,null) as object[];
30
31 foreach(object member in members)
32 {
33 //Get 'Name' Property Value
34 System.Reflection.PropertyInfo pInfo = GetPropertyInfo(member.GetType(),"Name",System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
35 string name = pInfo.GetValue(member,null) as string;
36
37 //Get 'Duty' Property Value
38 pInfo = GetPropertyInfo(member.GetType(),"Duty",System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
39 string duty = pInfo.GetValue(member,null) as string;
40
41 System.Console.WriteLine(String.Format("Name: {0} Duty: {1}",name,duty));
42 System.Console.WriteLine(System.Environment.NewLine);
43 }
44 }
45
46 system("pause");
47 }
48
49 private static object CreateInstance(string assemblyName,string typeName,object[] activetionAttributes)
50 {
51 System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(assemblyName);
52 return System.Activator.CreateInstance(assembly.GetType(typeName),activetionAttributes);
53 }
54
55 private static System.Reflection.PropertyInfo GetPropertyInfo(System.Type type,string propertyName,System.Reflection.BindingFlags bindingAttr)
56 {
57 foreach(System.Reflection.PropertyInfo pInfo in type.GetProperties(bindingAttr))
58 {
59 if (pInfo.Name.Equals(propertyName)) return pInfo;
60 }
61 return null;
62 }
63
64 }
65
66 public class Team
67 {
68 private Member[] _members = null;
69
70 public Team(Member[] members)
71 {
72 _members = members;
73 }
74
75 private Member[] Members
76 {
77 get
78 {
79 return _members;
80 }
81 }
82
83 }
84
85 public class Member
86 {
87 private string _name = null;
88 private string _duty = null;
89
90 public Member(string name,string duty)
91 {
92 _name = name;
93 _duty = duty;
94 }
95
96 private string Name
97 {
98 get
99 {
100 return _name;
101 }
102 }
103
104 private string Duty
105 {
106 get
107 {
108 return _duty;
109 }
110 }
111 }
112}
113