C#动态执行函数:利用反射实现
来源:互联网 发布:程序员 app 编辑:程序博客网 时间:2024/06/01 13:54
转自:http://hi.baidu.com/lomasoft/item/c051dddb4cc5e7e954347f88
希望能够在通过指定方法的字符串就能够执行类库中的任何函数.在js中可以使用eval asp中可以使用Execute vb中好象也有eval.
using System.Reflection;命名空间包含提供加载类型、方法和字段的有组织的视图的类和接口,具有动态创建和调用类型的功能。
using System.Reflection;
namespace myCommon
{
public class CExecuteMethod
{
/// <summary>
/// 根据字符执行方法
/// </summary>
/// <param name="path">命名空间</param>
/// <param name="className">类名</param>
/// <param name="MethodName">方法名</param>
/// <param name="parameters">参数</param>
/// <returns>返回object类型</returns>
public static object Execute(string path,string className,string MethodName,params object[] parameters)
{
//动态从程序集中查找所需要的类并使用系统激活器创建实例最后获取它的Type
Type type=Assembly.Load(path).CreateInstance(path+"."+className).GetType();
//定义参数的个数,顺序以及类型的存储空间;
Type[] parametersLength;
if (parameters != null)
{
//如果有参数创建参数存储空间并依次设置类型
parametersLength = new Type[parameters.Length];
int i=0;
foreach (object obj in parameters)
{
parametersLength.SetValue(obj.GetType(),i);
i++;
}
}
else
{
//没有参数就为空
parametersLength = new Type[0];
}
//查找指定的方法
MethodInfo methodinfo = type.GetMethod(MethodName,parametersLength);
//如果是静态方法就执行(非静态我没试过)
if (methodinfo.IsStatic)
{
//调用函数
return methodinfo.Invoke(null, parameters);
}
return null;
}
}
}
- C#动态执行函数:利用反射实现
- C#动态执行函数:利用反射实现
- C#利用反射实现(js)Eval,asp(Execute)功能 动态执行类库中的函数
- C#动态执行类库中的函数:利用反射实现(js)Eval,asp(Execute)功能
- C#利用反射技术实现winform界面动态存储
- 利用反射实现动态代理
- C# 动态编译及反射执行
- C# 利用反射动态创建对象[摘录]
- C# 利用反射动态创建对象
- C#利用反射动态创建对象
- C# 利用反射动态创建对象
- C# 利用反射动态创建对象
- C#利用反射动态调用类成员
- C# 利用反射动态创建对象
- 利用反射动态加载Assembly动态执行类型方法
- C#利用反射动态创建对象 带参数的构造函数和String类型
- C#利用反射动态创建对象 带参数的构造函数和String类型
- C++利用反射调用C#函数
- put 创建索引
- python安装LightGBM
- Trafodion 单表迁移
- gcc中的-Wl,rpath=<your_lib_dir>选项
- Java的比较接口 Comparable与Comparator
- C#动态执行函数:利用反射实现
- IORESOURCE_X 对应含义
- [HDU-5979] [Problem I]水题(16大连站)计算几何
- 学写个Python爬虫都被这世界针对
- 设计模式-抽象工厂模式
- iOS 之 UIControl 的 Block 响应方式
- How to use IO BAR in linux PCIe device driver
- Sicily 1198 Substring
- html标签里的onclick的时候总是报错:Uncaught ReferenceError: dosave is not defined(…)