企业网站优化服务主要围绕什么上海seo推广外包
C#通过反射获得一个类的私有字段
- 背景
- 代码实现
- 运行结果
- 关键代码
背景
在有的业务需求中我们需要把一个类的私有字段遍历出来,这时首先考虑的就是使用反射。下面看看具体实现的代码:
代码实现
1、BasUser.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Wongoing.Basic
{/// <summary>/// 云端用户实体类/// </summary>public class BasUser{#region 字段定义private int id;private string name;private int sex;private string account;private string phone;private string email;private string password;private DateTime gmtCreat;private bool isDelete;private string remark;private string salt;private DateTime lastActivityTime;private string ip;private string uuid;#endregion#region 属性定义public int Id{get { return id; }set { id = value; }}public string Name{get { return name; }set { name = value; }}public int Sex{get { return sex; }set { sex = value; }}public string Account{get { return account; }set { account = value; }}public string Phone{get { return phone; }set { phone = value; }}public string Email{get { return email; }set { email = value; }}public string Password{get { return password; }set { password = value; }}public DateTime GmtCreat{get { return gmtCreat; }set { gmtCreat = value; }}public bool IsDelete{get { return isDelete; }set { isDelete = value; }}public string Remark{get { return remark; }set { remark = value; }}public string Salt{get { return salt; }set { salt = value; }}public DateTime LastActivityTime{get { return lastActivityTime; }set { lastActivityTime = value; }}public string Ip{get { return ip; }set { ip = value; }}public string Uuid{get { return uuid; }set { uuid = value; }}#endregion#region 方法定义/// <summary>/// 转换为Url参数形式p1=v1&p2=v2/// </summary>/// <returns></returns>public string ToUrlParameters(){StringBuilder sb = new StringBuilder();return sb.ToString();}#endregion}
}
2、单元测试代码
[TestMethod]
public void TestGetFields(){Wongoing.Basic.BasUser user = new BasUser(){ Account = "test"};System.Reflection.FieldInfo[] fis = typeof(Wongoing.Basic.BasUser).GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);foreach(System.Reflection.FieldInfo fs in fis){Console.WriteLine(fs.Name + " = " + fs.GetValue(user));}}
运行结果
关键代码
System.Reflection.FieldInfo[] fis = typeof(Wongoing.Basic.BasUser).GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);