赞
踩
来自我个人博客站点 note.axibug.com
首先第一步
通过反射实现字符串调用程序集下的类namespace Sin365AIProject_01
{
public class B_Test1
{
public void GetT1()
{
Console.WriteLine("T1方法调用成功");
}
public void GetT2()
{
Console.WriteLine("T2方法调用成功");
}
}
}
那么我们先写一个方法做反射实现、
四个参数、
分别是 程序集名称、类的名称、要调用的方法名称、
以及 要调用的方法的参数集合
代码如下
/// <summary>
///
/// </summary>
/// <param name="AssemblyName"></param>
/// <param name="ClassFullName"></param>
/// <param name="Method"></param>
static void RefMainSet(string AssemblyName, string ClassFullName, string MethodName, object[] parameters)
{
//指定程序集、类名 获取类
Type type = Assembly.Load(AssemblyName).GetType(ClassFullName);
//需要调用的方法名
MethodInfo meth = type.GetMethod(MethodName);
//判断是否是静态方法
if (!meth.IsStatic)
//由于静态类和非静态类处理方式不同、
//所以分开封装
{//如果不是静态方法
RefMainSetUnStatic(meth, type, parameters);
}
else
{//如果是静态方法
RefMainSetStatic(meth, type, parameters);
}
}
/// <summary>
/// 调用非静态方法的方法
/// </summary>
/// <param name="meth"></param>
/// <param name="type"></param>
/// <param name="parameters"></param>
static void RefMainSetUnStatic(MethodInfo meth, Type type, object[] parameters)
{
//调用非静态方法
object obj = Activator.CreateInstance(type);
//调用参数
meth.Invoke(obj, parameters);
}
/// <summary>
/// 调用静态方法静态的方法
/// </summary>
/// <param name="meth"></param>
/// <param name="type"></param>
/// <param name="parameters"></param>
static void RefMainSetStatic(MethodInfo meth, Type type, object[] parameters)
{
//调用参数
meth.Invoke(null, parameters);
}
好的、我们来进行最终调用(请回看一眼上面、我们需要调用的类库和下面的方法)
比如我们要调用 程序集Sin365AIProject_01 下的 B_Test1类
下的GetT1方法。
那么调用方式、传入即可
如下:
RefMainSet("Sin365AIProject_01",
"Sin365AIProject_01.B_Test1",
"GetT1",
new object[] ())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。