根据类名字符串实例化类,并调用类的方法或函数
来源:互联网 发布:无锡百度推广seo 编辑:程序博客网 时间:2024/05/16 19:04
//获取类型信息
//如果调用其他的DLL
//System.Reflection.Assembly asmb = System.Reflection.Assembly.LoadFrom("DLL名");
// Type t = asmb.GetType("类名");
//如果是不调用其他DLL
System.Type t = System.Type.GetType("类名");
try
{
object dObj = Activator.CreateInstance(t);
//获取方法的信息
System.Reflection.MethodInfo method = t.GetMethod("方法名");
//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
System.Reflection.BindingFlags flag = System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance;
//GetValue方法的参数
object[] parameters = new object[] { "参数1" };
//object returnValue = method.Invoke(dObj, flag, Type.DefaultBinder,
parameters, null);
//取得方法返回的值
object returnValue = method.Invoke(dObj, flag, Type.DefaultBinder,
parameters, null);
}
catch(Exception ex)
{
}
using System;using System.Collections.Generic;using System.Text;using System.Reflection;namespace SearchFromDB{ class Reflection { string ClassName=""; Type clstype; public Reflection(string ClassName) { this.ClassName = ClassName; } public Reflection() { } /// <summary> /// 实例对象时需要指定类名 /// </summary> public object GetClassInstance(string assembly ,string NameSpace) { //assembly为程序集名称,NameSpace为命名空间 clstype = Assembly.Load(assembly).GetType(string.Concat(NameSpace, ".", this.ClassName)); if (clstype == null) return null; object obj = (object)Activator.CreateInstance(clstype); return obj; } /// <summary> /// 实例对象时不用指定类名 /// </summary> public object GetClassInstance(string assembly,string NameSpace,string classname) { ClassName = classname; clstype = Assembly.Load(assembly).GetType(string.Concat(NameSpace, ".", classname)); if (clstype == null) return null; object obj = (object)Activator.CreateInstance(clstype); return obj; } /// <summary> /// 执行类的静态方法 /// </summary> /// <param name="methodname"> /// 类的方法名 /// </param> /// <param name="parameters"> /// 方法的参数类型 /// </param> /// <param name="methodtype"> /// 方法的参数 /// </param> public object GetMethod(string methodname, Type[] methodtype, object[] parameters) { // methodtype.SetValue(typeof(string),1); System.Reflection.MethodInfo pMethod = clstype.GetMethod(methodname, BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public, null, methodtype, null); //调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值 //System.Reflection.BindingFlags flag = BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public; object returnValue = pMethod.Invoke(null, parameters); //string returnValue = pMethod.Invoke(clsObj, flag, Type.DefaultBinder, parameters,null).ToString(); return returnValue; } }}
- 根据类名字符串实例化类,并调用类的方法或函数
- Java如何根据类名和方法名创建类的实例,并调用对应方法?
- java反射:根据给定类名实例化类并调用其方法
- 根据类名和函数名字符串调用相关函数
- python 根据类的字符串名实例化对象
- 根据类名字符串创建类名并且调用类里的方法
- 根据类名字符串创建实例
- js或Jquery 根据字符串类型的方法名,找到对应的方法并且调用
- 根据字符串调用对象实例的方法
- C#根据类名字符转实例调用整理
- python 根据类名实例化对象
- c# 获得方法的所属类(或调用者)的类名,方法名
- 【实例】动态调用方法,通过类名
- 实例化一个类并调用其中的方法
- [NET]Net中的反射使用入门(根据类名和函数名,生成和调用对象的成员函数)
- [NET]Net中的反射使用入门(根据类名和函数名,生成和调用对象的成员函数) .
- C# 如何利用反射,将字符串转化为类名并调用类中方法
- 通过反射根据类名获取到类的实例
- Oracle存储过程中某些分支漏了commit造成调用OCI接口OCIStmtExecute不返回
- webview 部分代码
- SCrum元素
- RHEL5.7下iptables防火墙配置(上)
- PowerDesigner 连接oracle直接生成数据库中的表
- 根据类名字符串实例化类,并调用类的方法或函数
- RHEL5.7下iptabels防火墙配置(下)
- oracle table()函数应用;
- code::blocks 使用Pthread库
- 如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
- 什么是套打 水晶报表套打
- php数组array_combine()函数和array_count_values()函数
- switch
- Hungarian