C# 反射获得类名,私有方法,动态执行方法,返回多个值
直接上例子了,废话不多说,大家一看就懂。
实体类:
public class userinfo
{
public userinfo()
{ }
#region 成员
private int _userid;
private string
_username;
private string _password;
private int
_roleid;
private string _telephone;
private string
_usersex;
private string _address;
private string
_email;
private string _logintime;
private string
_createtime;
#endregion
#region 属性
public int userid
{
get { return
_userid; }
set { _userid = value; }
}
public string username
{
get { return _username;
}
set { _username = value; }
}
public string password
{
get { return _password;
}
set { _password = value; }
}
public int roleid
{
get { return _roleid;
}
set { _roleid = value; }
}
public string telephone
{
get { return _telephone;
}
set { _telephone = value; }
}
public string usersex
{
get { return _usersex;
}
set { _usersex = value; }
}
public string address
{
get { return _address;
}
set { _address = value; }
}
public string email
{
get { return _email;
}
set { _email = value; }
}
public string logintime
{
get { return _logintime;
}
set { _logintime = value; }
}
public string createtime
{
get { return _createtime;
}
set { _createtime = value; }
}
private string ReturnAutoID()
{
return
"userid";
}
#endregion
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
{
public class GetModelInfo
{
/// <summary>
/// 通过反射获得对象名称和自动增长ID
/// </summary>
/// <param name="obj">对象</param>
/// <returns>返回string数组</returns>
public static string[] Core(Object obj)
{
string[] str=new string[2];
Type T = obj.GetType();
MethodInfo mi = T.GetMethod("ReturnAutoID",
BindingFlags.NonPublic
| BindingFlags.Instance,
null, new Type[] { }, null);
//通过反射执行ReturnAutoID方法,返回AutoID值
string str1 = mi.Invoke(obj, null).ToString();
str[1] = str1;
str[0] = T.Name.ToString();
//返回该Obj的名称以及ReturnAutoID的值
return str;
}
}
}
调用:
userinfo _userinfo = new userinfo();
MessageBoxShow("实体类类名:"GetModelInfo.Core(_userinfo)[1] + " 自动ID:"+GetModel.Core(_userinfo)[0]);
OK,赶快测试下吧,通过这个例子你可以举一反三,获得很多其他的收获
其他知识点:
使用 Assembly 定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例。
使用 Module 了解如下的类似信息:包含模块的程序集以及模块中的类等。您还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
使用 ConstructorInfo 了解以下信息:构造函数的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的 GetConstructors 或 GetConstructor 方法来调用特定的构造函数。
使用 MethodInfo 了解以下信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的 GetMethods 或 GetMethod 方法来调用特定的方法。
使用 FieldInfo 了解以下信息:字段的名称、访问修饰符(如 public 或 private)和实现详细信息(如 static)等;并获取或设置字段值。
使用 EventInfo 来了解如下的类似信息:事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等;并添加或移除事件处理程序。
使用 PropertyInfo 来了解如下的类似信息:属性的名称、数据类型、声明类型、反射类型和只读或可写状态等;并获取或设置属性值。
使用 ParameterInfo 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。