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+"!!!!!!";
}
}
}