利用反射动态实例化类执行方法并传值
2011-06-15 20:37
323 查看
/// <summary>
/// 利用反射动态实例化类执行方法并传值
/// </summary>
/// <param name="className">类名</param>
/// <param name="methodName">方法名</param>
/// <param name="objParas">参数</param>
/// <returns></returns>
public static object GetMethod(string className,string methodName,object[] objParas)
{
Type t = Type.GetType(className);
/*实例化这个类*/
ConstructorInfo constructor = t.GetConstructor(new Type[0]);//将得到的类型传给一个新建的构造器类型变量
object obj = constructor.Invoke(new object[0]);//使用构造器对象来创建对象
/*执行Insert方法*/
MethodInfo m = t.GetMethod(methodName);
return m.Invoke(obj, objParas);
}
#endregion
#region 反射实例化类里所有的成员
public IMSDB()
{
var type = this.GetType();
//反射解析 获取成员列表
System.Reflection.PropertyInfo[] properties = type.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
if (properties.Length > 0)
{
foreach (var pi in properties)
{
var instance = Activator.CreateInstance(pi.PropertyType);
pi.SetValue(this, instance, null);
}
}
}
#endregion
/// 利用反射动态实例化类执行方法并传值
/// </summary>
/// <param name="className">类名</param>
/// <param name="methodName">方法名</param>
/// <param name="objParas">参数</param>
/// <returns></returns>
public static object GetMethod(string className,string methodName,object[] objParas)
{
Type t = Type.GetType(className);
/*实例化这个类*/
ConstructorInfo constructor = t.GetConstructor(new Type[0]);//将得到的类型传给一个新建的构造器类型变量
object obj = constructor.Invoke(new object[0]);//使用构造器对象来创建对象
/*执行Insert方法*/
MethodInfo m = t.GetMethod(methodName);
return m.Invoke(obj, objParas);
}
#endregion
#region 反射实例化类里所有的成员
public IMSDB()
{
var type = this.GetType();
//反射解析 获取成员列表
System.Reflection.PropertyInfo[] properties = type.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
if (properties.Length > 0)
{
foreach (var pi in properties)
{
var instance = Activator.CreateInstance(pi.PropertyType);
pi.SetValue(this, instance, null);
}
}
}
#endregion
相关文章推荐
- java利用反射动态执行类方法
- java 利用反射获取类,实例化,并执行其内部方法
- 利用反射技术动态执行方法时如何取引用类参数的值
- 利用反射动态加载Assembly动态执行类型方法
- 利用.net反射动态调用指定程序集的中的方法
- java利用反射实例化类、使用类中普通方法、使用类main(静态)方法
- 利用反射来动态创建实例和调用方法
- C#反射动态调用窗体,动态实例化窗体的方法
- 利用反射来动态创建实例和调用方法
- 动态编译Java并通过反射执行方法
- 利用一下java的反射根据字符串找类,方法,然后执行方法
- java利用反射执行字符串方法
- 利用CodeDom和反射动态编译并执行程序集
- 利用反射从程序集dll中动态调用方法
- Java反射学习(利用反射遍历链表并执行所有对象的所有get方法)
- C# aspx页面动态加载ascx用户控件 及 利用反射调用其内方法
- java反射拼接方法名动态执行方法
- 利用.net反射动态调用指定程序集的中的方法
- 利用反射动态调用多个方法
- 在工厂模式里面利用反射机制动态调用对象方法