Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 用反射调用任意.Net库中的方法
【标  题】:用反射调用任意.Net库中的方法
【关键字】:.Net
【来  源】:http://www.cublog.cn/u/884/showart.php?id=113487

用反射调用任意.Net库中的方法

Your Ad Here
注:
1、ReturnMessage 是我自写的一个类,作用请查看我的其他文章,我也把这个类一并附在后面
2、通过NameSpaceAndClassName和MethodName实际上就可以精确定位一个方法了如调用abc.dll里的namespace1.Class1.Main,调用起来就是CallAssembly("abc.dll","namespace1.Class1","Main",null)
 
public static ReturnMessage CallAssembly(string Path,string NameSpaceAndClassName,string MethodName,object[] Parameters)
        {
            try
            {
                Assembly Ass=Assembly.LoadFrom(Path);//调入文件(不限于dll,exe亦可,只要是.net)
                Type TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName是"名字空间.类名",如"namespace1.Class1"
                MethodInfo MI=TP.GetMethod(MethodName);//MethodName是要调用的方法名,如"Main"
                object MeObj=System.Activator.CreateInstance(TP);
                MI.Invoke(MeObj,Parameters);//Parameters是调用目标方法时传入的参数列表
                return new ReturnMessage(true,"成功调用",1);
            }
            catch(Exception e)
            {
                return new ReturnMessage(false,"出现异常,消息为:"+e.Message,-1,e);
            }
        }
 
附ReturnMessage
public class ReturnMessage
    {
        public ReturnMessage()
        {
            this.m_Succeed=false;
            this.m_Message="";
            this.m_Code=-1000;
            this.m_Data=null;
        }
        public ReturnMessage(bool IsSucceed)
        {
            this.m_Succeed=IsSucceed;
        }
        public ReturnMessage(bool IsSucceed,string Message)
        {
            this.m_Succeed=IsSucceed;
            this.m_Message=Message;
        }
        public ReturnMessage(bool IsSucceed,string Message,int Code)
        {
            this.m_Succeed=IsSucceed;
            this.m_Message=Message;
            this.m_Code=Code;
        }
        public ReturnMessage(bool IsSucceed,string Message,int Code,object Data)
        {
            this.m_Succeed=IsSucceed;
            this.m_Message=Message;
            this.m_Code=Code;
            this.m_Data=Data;
        }
        public ReturnMessage(bool IsSucceed,string Message,int Code,object Data,object[] Datas)
        {
            this.m_Succeed=IsSucceed;
            this.m_Message=Message;
            this.m_Code=Code;
            this.m_Data=Data;
            this.m_Datas=Datas;
        }
        //
        bool m_Succeed;
        string m_Message;
        int m_Code;
        object m_Data;
        object[] m_Datas;
        public bool Succeed
        {
            get{return m_Succeed;}
            set{m_Succeed=value;}
        }
        public string Message
        {
            get{return m_Message;}
            set{m_Message=value;}
        }
        public int Code
        {
            get{return m_Code;}
            set{m_Code=value;}
        }
        public object Data
        {
            get{return m_Data;}
            set{m_Data=value;}
        }
        public object[] Datas
        {
            get{return m_Datas;}
            set{m_Datas=value;}
        }
    }
UTF-8 - > GB2312编码 提取HTML代码中文字的C#函数:【上一篇】
在.Net中操作IIS:【下一篇】
【相关文章】
  • 在ASP.NET中处理 datetime 的一些通用函数
  • 通过改善架构来提高 ASP.Net 应用程序的性能
  • ASP.NET 2.0中ReadOnly的TextBox
  • ADO.NET 3.0
  • ASP.NET 2.0 中的新增服务、控件与功能概述
  • 让ASP.NET简便使用SCRIPT.
  • Vs.net 2003调用Matlab7编译的COM组件的问题与讨论
  • .NET framework 一个关于OleDbParameters的Bug
  • 1baiwan.com你能走多远?(原创,请任意转载,作者:小张.net)
  • 使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
  • 【随机文章】
  • MyTE-TG 核心完成,测试结果满意,顺便简单介绍一下这个东东。
  • .NET开源项目介绍及资源推荐:IOC容器篇
  • FreeMarker Eclipse Plugin的安装!
  • Python指南-4-深入流程控制
  • 我跟我朋友之间的关系
  • 在x86-64平台上安装32位solaris10
  • 向地图中加入点程序代码
  • 翻译计划
  • 《天堂2》先知二转任务三合一流程
  • (原创翻译)敏捷开发的必要技巧8:用用户例事(user story)来管理项目
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.