zoukankan      html  css  js  c++  java
  • 反射初识

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

    接口:

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

  • 相关阅读:
    linux定时任务之crontab
    Examples of GoF Design Patterns--摘录
    weblogic升级之ddconverter
    Memcached分布式算法详解--转
    java实现迷宫算法--转
    kmp java implement--转
    2013年小结及2014年展望
    深入redis内部--字典实现
    项目管理学习笔记之二.工作分解
    android在当前app该文件下创建一个文件夹
  • 原文地址:https://www.cnblogs.com/llcdbk/p/4173747.html
Copyright © 2011-2022 走看看