C#反射Reflection
2008-04-29 11:27
274 查看
是实现抽象工厂的基础,也是实现抽象工厂的核心技术,通过它,可以动态创建一个你想要的对象.如下面的例子是演示如何动态创建ChineseName或EnglishName的实例
using System;
2using System.Reflection;
3namespace TestReflection
4{
5 class AXzhz_sReflectionExample
6 {
7 public static void Main()
8 {
9 IName name=AbstractFactory.GetName();
10 name.ShowName();
11 }
12 }
13
14 public class AbstractFactory
15 {
16 public static IName GetName()
17 {
18 //s的值以后从Web.config动态获取
19 //把s赋值为:TestReflection.EnglishName,将显示英文名
20 string s = "TestReflection.ChineseName";
21 IName name = (IName)Assembly.Load("TestReflection").CreateInstance(s);
22 return name;
23 }
24 }
25
26 //声明一个接口,它有一个显示"名字"的功能
27 public interface IName
28 {
29 void ShowName();
30 }
31
32 //实现接口,显示中国名字
33 public class ChineseName : IName
34 {
35 public void ShowName()
36 {
37 Console.WriteLine("我叫AX!");
38 Console.ReadLine();
39 }
40 }
41
42 //实现接口,显示英国名字
43 public class EnglishName:IName
44 {
45 void IName.ShowName()
46 {
47 Console.WriteLine("My name is AXzhz!");
48 Console.ReadLine();
49 }
50 }
51}
using System;
2using System.Reflection;
3namespace TestReflection
4{
5 class AXzhz_sReflectionExample
6 {
7 public static void Main()
8 {
9 IName name=AbstractFactory.GetName();
10 name.ShowName();
11 }
12 }
13
14 public class AbstractFactory
15 {
16 public static IName GetName()
17 {
18 //s的值以后从Web.config动态获取
19 //把s赋值为:TestReflection.EnglishName,将显示英文名
20 string s = "TestReflection.ChineseName";
21 IName name = (IName)Assembly.Load("TestReflection").CreateInstance(s);
22 return name;
23 }
24 }
25
26 //声明一个接口,它有一个显示"名字"的功能
27 public interface IName
28 {
29 void ShowName();
30 }
31
32 //实现接口,显示中国名字
33 public class ChineseName : IName
34 {
35 public void ShowName()
36 {
37 Console.WriteLine("我叫AX!");
38 Console.ReadLine();
39 }
40 }
41
42 //实现接口,显示英国名字
43 public class EnglishName:IName
44 {
45 void IName.ShowName()
46 {
47 Console.WriteLine("My name is AXzhz!");
48 Console.ReadLine();
49 }
50 }
51}
相关文章推荐
- C#反射Reflection学习随笔
- C#反射(Reflection)对类的属性get或set值
- C# Reflection反射学习
- [整理]C#反射(Reflection)详解
- C# 反射(Reflection)
- C#反射Reflection
- C#使用反射(Reflection)实现深复制与浅复制
- C#反射(Reflection)对类的属性get或set值 .
- C#反射的使用(Reflection)
- [转]C# 关于反射类[System.Reflection] 根据类名 动态调用 类方法
- C# System.Reflection 反射
- 【C#学习】Reflection 反射
- [整理]C#反射(Reflection)详解
- C#之玩转反射【转:http://www.cnblogs.com/yaozhenfa/p/CSharp_Reflection_1.html】
- C#反射Reflection
- C#反射(Reflection)
- [整理]C#反射(Reflection)详解
- C# 反射(Reflection)
- C#_Assembly-Reflection_程序集与反射
- C# 反射(Reflection)