反射初识
使用反射可以调用其他程序集里面的方法,私有方法也可以调出,但是一般都使用的接口+反射的形式去调用类似以下例子:
接口:
public interface SayMethod { void sayHello(); }
中国人说话的方法实现这个接口:
public class Say : SayMethod { public void sayHello() { Console.WriteLine("你好"); } }
方法和类库分别都是单独的类库,生成后得到DLL文件在引用的时候反射的方法所在类不必引用实现接口类 的DLL,而是引用了说话方法这个接口的DLL,相当于让别的类帮你做事,而你只是去调用就可以,
下面看一下反射的方法实现:
string str = @"F:\接口\KoreanSay.dll"; //获取外部程序集地址 Assembly asm = Assembly.LoadFile(str); //得到这个外部程序集的方法或者属性成为一个类 Type[] types = asm.GetExportedTypes(); Type type = types[0]; //Type type = asm.GetExportedTypes()[0]; //实例化一下这个类 object obj = Activator.CreateInstance(type); //调用方法 SayMethod say = obj as SayMethod; say.sayHello(); Console.ReadKey();
其中,type也可以获得某个类的方法,属性,字段名,具体方法请百度一下,一般情况下个人认为反射多用于C/S程序,并且多用于制作第三方插/控件,有不足的地方还希望大神指点
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案