函数如下,有注释,请自行查看:)注: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);
}
} 附ReturnMessagepublic 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;}
}
}
用反射调用任意.net库中的方法
时间: 2024-11-30 08:12:10
用反射调用任意.net库中的方法的相关文章
action 没有跳转-Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY?
问题描述 Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY? action中调用EmailUtil中的sendHtmlMail方法: public void forgetPassword() throws Exception { String email = request.getParameter("email"); User u=userService.getByEmail(email); Json json=new Json(); if (St
转型-关于如何通过子类调用父类的父类中的方法
问题描述 关于如何通过子类调用父类的父类中的方法 package access; class A{ public A(){System.out.println("A created!");} public int f(){ System.out.println("call A.f()"); return 1; } } class B extends A{ public int f(){ System.out.println("call B.f()"
javascript-如何实现一个js调用另外一个js中的方法
问题描述 如何实现一个js调用另外一个js中的方法 两个js文件分别有一个方法写在$(function(){ 方法...}),如何实现一个js调用另外一个js中的方法.调用方法就会报错:Uncaught ReferenceError: addNode is not defined 解决方案 ?? 例如一个test.js内容如下:function main( input ){?? return input;}在C++中调用方法如下:// vcJscript.cpp : 定义控制台应用程序的入口点.
关于winform中多线程调用AX控件中的方法会阻塞UI线程的问题
问题描述 本人新手...winform中子线程调用AX控件中的某个耗时的方法(3.4秒)会阻塞UI线程,请问有没有办法在子线程中创建AX控件,让子线程去执行AX控件中的方法呢? 解决方案 解决方案二:你可以尝试直接在新的线程里执行该方法,不行的话只能由控件编写者提供异步的方法解决方案三:winform中子线程调用AX控件中的某个耗时的方法(3.4秒)会阻塞UI线程既然你是在子线程里调用,为什么会阻塞UI线程?放出你的代码来解决方案四:控件是vc写的,拖到form上的,SCM_Card_Chb是控
用java的反射机制,能不能调用到单例模式类中的方法(非静态)?
问题描述 1.HelloWorld 类:public class HelloWorld { private static HelloWorld instance = null; private HelloWorld() { } public static HelloWorld getInstance() { if (instance == null) { instance = new HelloWorld(); } return instance; } public void sayHello(
使用反射获取字节码文件中的方法
public class ReflectMethod { /** * 方法的反射 * @param args */ public static void main(String[] args) throws Exception { String str1="www.baidu.com"; System.out.println(str1.charAt(2)); //我们平时的时候是使用str1.charAt()去调用的方法,然后获取到第二个字符 /** * String str1=&qu
JavaScript的jQuery库中ready方法的学习教程_jquery
学习 jQuery 有许多途径,我们今天从 jQuery 的 ready 函数开始.本例中的代码都来自于 jQuery 脚本库. 如果你使用过 jQuery , 就必然使用过 ready 函数,它用来注册当页面准备好之后可以执行的函数. 问题来啦,我们的页面什么时候准备好了呢? onload 事件最基本的处理方式就是页面的 onload 事件,我们在处理这个事件的时候,可以有多种方式,即可以通过 HTML 方式,直接写在 body 元素的开始标记中,也可以使用事件注册的方式来使用,这又可以分为
c++-C++ 时间调用除了boost库还有什么第三方
问题描述 C++ 时间调用除了boost库还有什么第三方 在做C++的项目过程中,原来对于时间的处理部分直接调用了Boost库中提供的gregorian和posix_time命名空间中的方法.现在由于某些方面的原因,需要解除对boost库的依赖.请问除了调用c++基本库中的方法有什么其他的可用第三方时间调用库吗? 解决方案 既然要用其它第三方,为啥不选boost 解决方案二: boost稍显庞大,工程需要多平台支持.boost多个平台需要分别编译对应的版本.出现错误,调试起来也比较麻烦 解决方案
WAS V7 能否实现共享库中jar包的动态加载
问题描述 各位老师好:我最近做了一个项目,用到了websphere中的共享库我想实现这样一个功能:当上传一个jar到指定的共享库目录中部署的应用就能够反射调用这个jar包中的class.而不需要重新启动应用.请大家不吝赐教,这里谢谢各位了.我的邮箱zhangyueming@neusoft.com 解决方案 解决方案二:应该不可以解决方案三:好复杂的,可以尝试替换ClassLoaderparent=Thread.currentThread().getContextClassLoader();Cla