A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wenbolwm 黑马帝   /  2012-3-14 10:55  /  2279 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问下c#的反射主要用来做什么啊?能给一个例子么?谢谢了。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 徐振升 于 2012-3-14 11:57 编辑

比如你有一个生成运算类简单工厂类(OperationFactory),一个运算父类(Operation)和加(AddOperation)减(SubOperation)两个运算子类
public class OperationFactory(string operation)
{
      public static Operation getOperation(string operation)
      {
              Operation operate = null;
              switch(operation)
              {
                      case "+":
                      operate = new AddOperation();
                      break;
                      case "-":
                      operate = new SubOperation();
                      break;
              }
              return operate;
      }
}
因为我的计算程序需要增加乘法功能,那我是不是除了增加一个乘法类(MulOperation)还需要在上面这个工厂方法中去增加case "*"来得到具体的运算类。
但是问题就来了,这样难道还要把工厂的运算方法代码给你去修改?这样不利于无维护。应为后面我可能还需要加除法或者乘方等等 或者自己的一个运算方式。

这时候就可以用反射来改造你的工厂让它可以动态的根据你用变量给它一个“程序集名称”和一个“程序集下的类名”得到你需要创建的类。

简单一句话就是  可以动态的生成你需要的类,不需要你去写逻辑判断我该生成那个类。
有解说不足的地方欢迎指出,共同进步。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马