C#中反射机制的小例子

在Net开发平台下,我们已经尝到了反射机制带来的益处:那就是集成开发环境中的智能感知特性。

下面是一个小例子,刚学习反射机制。若有错误欢迎指正

//定义一个应用框架 通过反射机制 没做异常处理
using System;
using System.Reflection;
namespace Hello
{
 class MainClass
 {
  public static void Main(string[] arg)
  {
   Test t = Test.getType(arg[0]);
   Console.WriteLine(t.Hello("nothing"));
  }
 }
 class Test//可能客户需要修改 我不知道未来有什么需要扩展
 {
  public virtual string Hello(string s)
  {
   return "!!!!!"+s+"!!!!!!";
  }

  public static Test getType(string s)
  {
   Type t = Type.GetType(s,true);//可以读配置文件 获取型别
   ConstructorInfo[] constructorInfo = t.GetConstructors();
   return  (Test)constructorInfo[0].Invoke(new object[0]);
  }
 }
 
 class MyTest1:Test //这里改变不会影响上面,很爽 当然还可以将它们分离出去 就像插件一样
                    //我们的业务如果也能采用插件,那么就可以不用修改主程序了。这是个人的
                    //想法。
 {
  public override string Hello(string s)
  {
   return "can you see me ?"+s+"!!!!!!";
  }
 }
 class MyTest2:Test
 {
  public override string Hello(string s)
  {
   return "can you hear me ?"+s+"!!!!!!";
  }
 }
 class MyTest3:Test
 {
  public override string Hello(string s)
  {
   return "can you touch me ?"+s+"!!!!!!";
  }
 }
}

posted on 2006-09-01 13:33  Leetle  阅读(655)  评论(1编辑  收藏  举报

导航