反射初识

使用反射可以调用其他程序集里面的方法,私有方法也可以调出,但是一般都使用的接口+反射的形式去调用类似以下例子:

 

接口:

    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程序,并且多用于制作第三方插/控件,有不足的地方还希望大神指点

posted @ 2014-12-19 13:45  洛晨随风  阅读(145)  评论(0编辑  收藏  举报