码迷,mamicode.com
首页 > 其他好文 > 详细

反射初识

时间:2014-12-19 14:25:56      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

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

 

接口:

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

反射初识

标签:

原文地址:http://www.cnblogs.com/llcdbk/p/4173747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!