呵呵。

解决方案 »

  1.   

    例如,运行期获得一个窗体的名字是个字符串,但是你想根据字符串找到该窗体,就要用到反射了。==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    优惠接单开发,组件控件定制开发,成品源代码批发
    联系方式:Q64180940 全天在线
    ==================================================================
      

  2.   

    反射,可以理解为通过名称调用,其实这个概念很早就有了,像"CallByName"一样.
      

  3.   

    比如,你知道了类的名称,或某一个成员的名称,那么可以通过这个名称字符串来直接调用,比如:Type t = Type.GetType("System.Int32");
    object objValue = Activator.CreateInstance(t);Console.WriteLine(objValue);
    Console.WriteLine(objValue.GetType().FullName);
      

  4.   

    反射嘛就是动态识别类型并调用之,基本上你可以把它理解成.net的RTTI
      

  5.   

    动态加载, 更改, 增加...某个程序集
    下面例子中, ChangeValue类的myValue本是私有字段, 
    一般情况下在类外部是不能改它的值的, 但利用反射就能改了
    -----------------------------------------------------
    using System;
    using System.Reflection;class ChangeValue
    {
       private string myValue;
       public ChangeValue(string str)
       {
          myValue = str;
       }
       public void WriteLine()
       {
         Console.WriteLine("MyValue is: " + myValue);
       }
    }
    class Test
    {
       public static void Main(string[] args)
       {
         ChangeValue cv = new ChangeValue("old value");
         cv.WriteLine();     Type t = cv.GetType();
         FieldInfo field = t.GetField("myValue", 
              BindingFlags.NonPublic |BindingFlags.Instance);
         field.SetValue(cv, "new value");     cv.WriteLine();
       }
    }
    ----------------------------------------------------
    再打个比方, 你要写一个播放器, 要支持如mp3, wmv, avi...等格式,
    你还希望用户能自己安装一个新的格式, 也就是我们常说的插件.
    在实现这些, 可能你要将每种格式都写成单个的解码程序集, 如
    mp3.dll, wmv.dll, avi.dll....
    这样当播放时, 根据扩展名去动态调用相应的解码程序集, 那么这时你就得
    用反射去动态加载这些dll了.如: Assembly.LoadFile ("...avi.dll")
    然后通过反射可以用avi.dll里面定义的类了
      

  6.   

    FieldInfo field = t.GetField("myValue", 
              BindingFlags.NonPublic |BindingFlags.Instance);谁能解释一下?不公开的数据字段?或???