反射是编程的读取与类型相关联的元数据的行为,命名空间为System.Reflection
 Assembly:表示一个程序集,提供了一个LoadFrom方法。用法:
Assembly SampleAssembly=Assembly.LoadFrom("c:\\abc.dll");
还可以使用txt文本,但要把abc.dll文件的信息写入txt文本
例如abc.dll文件的路径,命名空间和类方法等
下面举一个反射的例子
static void Main(string[] args)
        { string[] DllArr = File.ReadAllLines(@"E:\1.txt", Encoding.Default);// 把读出的文件内容放入到数组中
   Assembly Ass = Assembly.LoadFile(DllArr[0]);//加载指定路径上的程序集文件内容
   object myobj = Ass.CreateInstance(DllArr[1]);//搜索指定类型创建实例
  Type mytype = Ass.GetType(DllArr[1]);//获取类型
  MethodInfo mymethod = mytype.GetMethod(DllArr[2]);//获取方法信息
object[] objarr = new object[DllArr.Length - 3];//创建新数组比DllArr数组的长度小三
            for (int i = 0; i < objarr.Length; i++)
            {
                objarr[i] = DllArr[i + 3];
            }
            mymethod.Invoke(myobj, objarr);//使用指定参数调用当前实例的方法或构造函数
 }
 
反射调用构造函数例子
 
static void Main(string[] args)
 
 
 {
  
 BindingFlags bf =
 
BindingFlags.DeclaredOnly |
 
  BindingFlags.Public |
 
 BindingFlags.NonPublic |
 
 
BindingFlags.Instance;
 
 
 
Type t = typeof(Demo_Class);//获取类的类型
 
 
ConstructorInfo Cons = t.GetConstructor
 
(new Type[0]);  //构造函数无参所以构造函
 
 
数无类型参数。如有参数则写 (new Type[]
 
{typeof(int)});
 
 
object Obj = Cons.Invoke(null);//传入的构
 
 
造参数为空得到对象,如有参数则写new
 
object[] { 456 }
 
 
object[] MethodPar = new object[] { “a” }; 
 
 
//方法的参数
 
 
MethodInfo mi = t.GetMethod
 
(“Method”, bf);
 
 
//得到方法
 
Console.WriteLine(mi.Invoke(Obj, MethodPar));
        }