看了一下MSDN中所说的,不太明白。
好像就是得到类型那样?
请各位用一些方法讲解一下。

解决方案 »

  1.   

    简单的说,就是用字符串来表示实际的类,这样在程序运行的时候就可以动态new出实例来了
      

  2.   

    例子:
    应用反射获取当前执行的程序集中的模块信息,类型信息,成员信息,并显示模块,类型和成员的名称。protected void Page_Load(object sender,EventArgs e)
    {
      ///获取程序集,并输出程序集的模块,类型,成员信息
      foreach(Module m in Assembly.GetExecutingAssembly().GetModules())
       { ///输出模块信息
         Response.Write("Module:"+m.name+" <br> ");
         foreach(Type in m.GetTypes())
         {
           ///输出类型信息
           Response.Write("Type:"+t.name+"<br>");
           foreach(MemberInfo mi in t.GetMembers())
           {///输出成员信息
            Response.Write("MemberInfo:"+mi.name+"<br>");
           }
         }
       }
      Response.End();
    }
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Threading;
    using System.Reflection;
    using System.Reflection.Emit;namespace PCTools
    {
        public class MyEnumBuilder
        {
            static AssemblyBuilder myAssemblyBuilder;
            static ModuleBuilder myModuleBuilder;
            static EnumBuilder myEnumBuilder;        public static void Main()
            {
                //创建:程序集名
                AssemblyName myAssemblyName = new AssemblyName();
                myAssemblyName.Name = "EnumColor";            //创建:程序集
                myAssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(myAssemblyName,AssemblyBuilderAccess.Save);            //创建:模块
                myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("EmittedModule","EmittedModule.mod");            //创建:枚举
                myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.EnumColor",TypeAttributes.Public, typeof(Int32));            //创建:类型元数据
                myEnumBuilder.DefineLiteral("Red", 1);
                myEnumBuilder.DefineLiteral("Green",2);            //创建:类型
                myEnumBuilder.CreateType();            //创建:程序
                myAssemblyBuilder.Save("EnumColor.dll");            //End
                Console.WriteLine("EnumColor Created!");
            }
         }
    }
      

  4.   

    楼主 建议看下: c#插件开发 方面的资料一个插件相当于一个dll文件主程序调用这个dll文件,不是手动引用,他会通过反射得到dll 类型。从而创建这个类对象加以使用
    一般模式:主程序(空窗体,通过接口加载插件)----接口(被主程序引用,被插件继承)----插件(可以是任何c#程序,必须实现接口)
      

  5.   

    楼主可用过winform的dataGridView??   
    绑定一个表到dataGridView , 他会根据datatable的columns在dataGridView里面自动生成列,  
    楼主觉得dataGridView凭什么知道他的数据源有那个列并且就叫那个列名??
    dataGridView在设计的时候是不知道将来所用到的数据源是什么  但是不管是哪个表  都能正确显示
    这就是反射
      

  6.   

    反射簡單來講就是程序運行過程中,可以動態獲取載入內存中的類型對應信息,主要為Type對應的MetaData,MethodsTable,Parameters,Properties等等。具體可以找本書自己體會,這個東西還是要從實踐中來
      

  7.   

    我从一个DLL中得到类型后,如果用这个类型来创建对象,并调用这个类型对象的方法?
      

  8.   

    我目前项目中有用到的例子,如下在XML中有实体类的各属性的值
    在程序运行过程我通过 实体类对象.GetType().GetProperties()取得对象的所有属性的集合properties。
    然后在XML节点中循环(节点名称与实体类属性名称一致)
    properties[节点名]=节点的值还可以取得类的方法集合,再通过名称取得方法,然后调节,从而达到动态调用的目的。用多了就自然理解了。
      

  9.   

    还是不太懂……做了一个DLL,类可以检测出来,但如何用加载的类建立对象呢?
      

  10.   

    http://hi.baidu.com/zsq811122/blog/item/91900513de20d3d7f7039ee8.html