string result = GetProperties(model); string value = GetPropertyValue(model, "user_name");

2、实体类

public class User
    public string user_name { get; set; }
    public string nick_name { get; set; }
    public string password { get; set; }

3、PropertyInfo 获取实体类的所有属性和值

public string GetProperties<T>(T t)
    string tStr = string.Empty;
    if (t == null)
        return tStr;
    PropertyInfo[] properties = t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
    if (properties.Length <= 0)
        return tStr;
    foreach (PropertyInfo item in properties)
        string name = item.Name;
        object value = item.GetValue(t, null);
        if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
            tStr += string.Format("{0}:{1},", name, value);
            GetProperties(value);
    return tStr;

4、PropertyInfo 获取实体类指定属性值

public string GetPropertyValue<T>(T t, string field)
    string value = "9";
    if (t == null)
        return value;
    PropertyInfo[] properties = t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
    if (properties.Length <= 0)
        return value;
    var property = properties.Where(x => x.Name == field).FirstOrDefault();
    value = property.GetValue(t, null).ToString();
    return value;

5、类型判断
propertyInfo.PropertyType != typeof(int)
propertyInfo.PropertyType != typeof(double)
propertyInfo.PropertyType != typeof(DateTime?)

private readonly TestDbContext _context; public ReportsService(TestDbContext context) _context = context; public IEnumerable<TestDto> Get() _context.ExecuteProc<TestDto>("存储过程名称", 参数); public static IEnumerable<TElement> ExecuteProc<TElement>(this TestDbContext db, string sql, params object[] parameters) where TElement : new() var connection = db.Database.GetDbConnection(); using (var cmd = connection.CreateCommand()) db.Database.OpenConnection(); cmd.CommandText = sql; cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddRange(parameters); var dr = cmd.ExecuteReader(); var columnSchema = dr.GetColumnSchema(); var data = new List<TElement>(); while (dr.Read()) TElement item = new TElement(); Type type = item.GetType(); foreach (var kv in columnSchema) var propertyInfo = type.GetProperty(kv.ColumnName); if (kv.ColumnOrdinal.HasValue && propertyInfo != null) if (kv.ColumnName == "COLLECTOR_CODE") var value = dr.IsDBNull(kv.ColumnOrdinal.Value) ? null : dr.GetValue(kv.ColumnOrdinal.Value); if (value == null) if (!string.IsNullOrEmpty(value.ToString()) && propertyInfo.PropertyType != typeof(int) && propertyInfo.PropertyType != typeof(double) && propertyInfo.PropertyType != typeof(DateTime?)) value = value.ToString(); propertyInfo.SetValue(item, value); data.Add(item); dr.Dispose(); return data;

*
*
*

代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi in t.GetProperties())     object value1 = pi.GetValue(tc, null));//用pi.GetValue获得     string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来 本文主要介绍.NET Core(C#)中,使用反射进行类(class)的属性(PropertyInfo)、字段(FieldInfo)和方法(MethodInfo)相关操作,通过扩展方法编写的工具类,以及相关示例代码。 原文地址:.NET Core(C#) 反射类的属性(PropertyInfo)、字段(FieldInfo)和方法(MethodInfo)相关操作扩展方法工具类 注意:若不动态转换属性,简单调用SetValue方法赋经常出错!特别是日期类型、带符号的数字类型等。 解决方案: 通过TypeDescriptor.GetConverter方法获取对应数类型的转换器,然后调用ConvertFromString方法进行转换。 /// <summary> /// 通过.NET反射动态调用SetValue方法给属性PropertyInfo /// </summary> /// <param name="obj">对象实例</p 用索引化属性的可选索引设置指定对象的该属性。 public virtual void SetValue (object obj, object value, object[] index); obj Object 将设置其属性的对象。 value Object 新的属性。 index Object[] 索引化属性的可选索... 敲代码遇到一个问题,因为之前瞧的机房系统的组合查询功能有许多的数据需要赋实体,如果一个一个赋,这样会导致产生许多相似的代码,就会不符合封装的要求,所以到网上查找之后,找到propertyinfo属性定义:它提供灵活的机制来读取、编写或计算某个私有字段的。 可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法。 这使得可以轻松访问数据,此外还有助于提高方法的安全性和... 1、引入命名空间:System.Reflection;程序集:mscorlib(在mscorlib.dll中) 2、示例代码(主要是getType()、setValue()、getValue()方法): using System; using System.Collections.Generic; using System.Linq; using System.Reflection; usi... 众所周知,C#反射Type类可以获取到字段信息(FieldInfo)及属性信息(PropertyInfo),他们的基类是MemberInfo。 那么问题来了,再FieldInfo和Property Info中有一个方法为GetValue(Object obj),可以获取引用对象下的具备该字段/属性,最近就遇到了问题需要反射中来判断是否引用的同一对象,那么这个GetValue返回的到底是原来成... 用索引化属性的可选索引设置指定对象的python基础教程该属性。 public virtual void SetValue (object obj, object value, object[] index); obj Object 将设置其属性的对象。 value Object 新的属性。 index Object[] 索引化属性的可选索引。 对于非索引化属性,该应为 null。 SetValue(Object, Ob 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关更多信息,请参见有关的部分。 yarn eject 注意:这是单向操作。 eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从项目中删除单个构建依赖项。 相反,它将所有配置文件和传递依赖项(webpack,Babel,ESL   public string name { get; set; }   public string gender { get; set; }   public string age { get; set; } //实例化类,并给实列化对像的属性: User u = new User(); u.name = ahbool; u.gender = 男; //输出此类的所有属性名和属 /// 属性要修改的 public int ModifyBy(Expression<Func> whereLambda, string[] propertyNames, object[] perpertyValues) //1.查询要修改的对象集合 var list = db.Set().Where(whereLambda).ToList(); //2.获取 要修改对象 的类型属性 Type t = typeof(T); //3.循环 要修改的 实体对象,并根据 要修改的属性名 修改对象对应的属性 foreach (var item in list) //循环 要修改的属性 名称, 并 反射取出 t 中的 属性对象 for (int index = 0; index < propertyNames.Length;index++ ) //获取要修改的属性名 string pName = propertyNames[index]; //获取属性对象 PropertyInfo pi = t.GetProperty(pName); 发现属性 (Property) 的属性 (Attribute) 并提供对属性 (Property) 元数据的访问。 1.如何获取? Type.GetProperty(String) 获取该类的指定的名字String公开的属性,如果私有会为空 Type.GetProperty(String,BindingFlags) 获取该类的指定的名字String和指定类型BindingFlags的属性 Type.GetProperties() 获取该类的所有公开属性 Type.GetProperties(Bind