博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 反射获得类名,私有方法,动态执行方法,返回多个值
阅读量:4604 次
发布时间:2019-06-09

本文共 2840 字,大约阅读时间需要 9 分钟。

我的广告单元,有空点一下哦,谢谢!

直接上例子了,废话不多说,大家一看就懂。

代码内容:
实体类:
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;
namespace Reflecti
{
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 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。

转载于:https://www.cnblogs.com/qidian10/archive/2011/08/17/2143761.html

你可能感兴趣的文章
YII实现dropDownList 联动事件
查看>>
为什么JavaScript里面0.1+0.2 === 0.3是false
查看>>
docker swarm集群搭建
查看>>
BZOJ 1303: [CQOI2009]中位数图 问题转化_扫描_思维
查看>>
SP1026 FAVDICE - Favorite Dice 数学期望
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
【矩阵+十进制快速幂】[NOI2013]矩阵游戏
查看>>
Java一个简单的文件工具集
查看>>
蓝牙BLE扫描成功,log中打印出扫描到的设备
查看>>
一般处理应用页中绑定方法代码段
查看>>
无限鼠标没反应了
查看>>
CSU - 1356 Catch(dfs染色两种写法,和hdu4751比较)
查看>>
zabbix监控php-fpm的性能
查看>>
温故知新 div + css笔记
查看>>
针对降质模型中的模糊SR
查看>>
POJ1142Smith Numbers一道简单的数学题
查看>>
UIButton(改变Title和image位置)
查看>>
Linux-使用之vim编译安装出现的问题
查看>>
codevs 3314 魔法森林
查看>>
mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题...
查看>>