zoukankan      html  css  js  c++  java
  • 反射入门

    反射是对DLL的动态使用,与添加引用的区别:

    反射不需要引用
    只要知道你的dll所在的位置,dll文件的名称,内部的方法名
    就可以GetMethod来获取方法   就可以直接拿来用

    和引用差不多,楼主的意思是,我既然可以引用进来直接使用,为什么还要用反射这种执行效率底下的方法是不是?

    引用执行效率是高,但是你dll文件很多呢?就像电视台:中央一套.dll,中央二套.dll.....上百个dll文件
    你都要添加一次?    
    当这个页面用到那份dll的概率比较小并且dll文件是动态的,这时候  你可以用变量存储dll文件的名称
    来动态反射,避免多余的添加引用,这样方便 也比较合理,万一浙江又多开了几个电视台,你也不用就改程序了
    反正是动态的  管他新建电视台还是删除电视台,我只反射传进来的dll文件名

    反射使用:

    新建类库:

     
    public class Class1
        {
            public Class1()
            { }
            public string ShowMessage(string s)
            {
                return "你打印的信息为:"+s;
            }
            public string ShowName(string name)
            {
                return "你的名字为:"+name;
            }
        }
    

      

    保存路径为:E:\ClassLibrary1.dll

    使用反射:

    static void Main(string[] args)
            {
                System.Reflection.Assembly ass;
                Type type;
                object obj;
                try
                {
                    ass = System.Reflection.Assembly.LoadFile(@"E:\ClassLibrary1.dll");
                    type = ass.GetType("ClassLibrary1.Class1");
                    System.Reflection.MethodInfo method = type.GetMethod("ShowMessage");
                    obj = ass.CreateInstance("ClassLibrary1.Class1");
                    string s = (string)method.Invoke(obj, new string[] { "这是一个信息" });
    
                    Console.WriteLine(s);
                    method = type.GetMethod("ShowName");
                    s = (string)method.Invoke(obj,new string[]{ "lvyafei"});
                    Console.WriteLine(s);
                    method = null;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                finally
                {
                    ass = null;
                    type = null;
                    obj = null;
                }
            }
    

      

  • 相关阅读:
    11->centos6 安装oracle
    centos7安装rlwrap
    ajax
    java获取时间戳
    idea主要设置大纲图
    ppycharm设置解释器版本号码
    JTA 深度历险
    学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
    分库分表的几种常见玩法及如何解决跨库查询等问题
    深入浅出SOA
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/fsfdsfsdfsdfsd.html
Copyright © 2011-2022 走看看