1
using
System;
2 using System.Reflection;
3
4 namespace Test
5 {
6 public interface ICClassA
7 {
8 ICClassB GetB();
9 }
10 public interface ICClassB
11 {
12 ICClassC GetC();
13 }
14 public interface ICClassC
15 {
16 ICClassA GetA();
17 }
18 public class ClassA : ICClassA
19 {
20 public ICClassB GetB()
21 {
22 return new ClassB() as ICClassB;
23 }
24 }
25 public class ClassB : ICClassB
26 {
27 public ICClassC GetC()
28 {
29 return new ClassC() as ICClassC;
30 }
31 }
32 public class ClassC : ICClassC
33 {
34 public ICClassA GetA()
35 {
36 return new ClassA() as ICClassA;
37 }
38 }
39 public class test
40 {
41 public static string GetInfo()
42 {
43 System.Type typeA = typeof(ClassA);
44 System.Type typeB = typeof(ClassB);
45 System.Type typeC = typeof(ClassC);
46 object objA = Activator.CreateInstance(typeA);
47 object objB = typeA.InvokeMember("GetB", BindingFlags.InvokeMethod, null, objA, null);
48 object objC = typeB.InvokeMember("GetC", BindingFlags.InvokeMethod, null, objB, null);
49 return objA.GetType().ToString() + "+" + objB.GetType().ToString() + "+" + objC.GetType().ToString();
50 }
51 }
52}
53
2 using System.Reflection;
3
4 namespace Test
5 {
6 public interface ICClassA
7 {
8 ICClassB GetB();
9 }
10 public interface ICClassB
11 {
12 ICClassC GetC();
13 }
14 public interface ICClassC
15 {
16 ICClassA GetA();
17 }
18 public class ClassA : ICClassA
19 {
20 public ICClassB GetB()
21 {
22 return new ClassB() as ICClassB;
23 }
24 }
25 public class ClassB : ICClassB
26 {
27 public ICClassC GetC()
28 {
29 return new ClassC() as ICClassC;
30 }
31 }
32 public class ClassC : ICClassC
33 {
34 public ICClassA GetA()
35 {
36 return new ClassA() as ICClassA;
37 }
38 }
39 public class test
40 {
41 public static string GetInfo()
42 {
43 System.Type typeA = typeof(ClassA);
44 System.Type typeB = typeof(ClassB);
45 System.Type typeC = typeof(ClassC);
46 object objA = Activator.CreateInstance(typeA);
47 object objB = typeA.InvokeMember("GetB", BindingFlags.InvokeMethod, null, objA, null);
48 object objC = typeB.InvokeMember("GetC", BindingFlags.InvokeMethod, null, objB, null);
49 return objA.GetType().ToString() + "+" + objB.GetType().ToString() + "+" + objC.GetType().ToString();
50 }
51 }
52}
53