本文实例讲述了C#通过属性名字符串获取、设置对象属性值操作.分享给大家供大家参考,具体如下:
#通过反射获取对象属性值并设置属性值
0、定义一个类
1
2
3
4
5
6
|
public class User { public int Id { get ; set ; } public string Name { get ; set ; } public string Age { get ; set ; } } |
1、通过属性名(字符串)获取对象属性值
1
2
3
4
5
6
|
User u = new User(); u.Name = "lily" ; var propName = "Name" ; var propNameVal = u.GetType().GetProperty(propName).GetValue(u, null ); Console.WriteLine(propNameVal); // "lily" |
2、通过属性名(字符串)设置对象属性值
1
2
3
4
5
6
7
|
User u = new User(); u.Name = "lily" ; var propName = "Name" ; var newVal = "MeiMei" ; u.GetType().GetProperty(propName).SetValue(u, newVal); Console.WriteLine(propNameVal); // "MeiMei" |
#获取对象的所有属性名称及类型
通过类的对象实现
1
2
3
4
5
6
7
8
9
|
User u = new User(); foreach (var item in u.GetType().GetProperties()) { Console.WriteLine($ "propName:{item.Name},propType:{item.PropertyType.Name}" ); } // propName: Id,propType: Int32 // propName:Name,propType: String // propName:Age,propType: String |
通过类实现
1
2
3
4
5
6
7
|
foreach (var item in typeof (User).GetProperties()) { Console.WriteLine($ "propName:{item.Name},propType:{item.PropertyType.Name}" ); } // propName: Id,propType: Int32 // propName:Name,propType: String // propName:Age,propType: String |
#判断对象是否包含某个属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
static void Main( string [] args) { User u = new User(); bool isContain= ContainProperty(u, "Name" ); // true } public static bool ContainProperty( object instance, string propertyName) { if (instance != null && ! string .IsNullOrEmpty(propertyName)) { PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName); return (_findedPropertyInfo != null ); } return false ; } |
将其封装为扩展方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static class ExtendLibrary { /// <summary> /// 利用反射来判断对象是否包含某个属性 /// </summary> /// <param name="instance">object</param> /// <param name="propertyName">需要判断的属性</param> /// <returns>是否包含</returns> public static bool ContainProperty( this object instance, string propertyName) { if (instance != null && ! string .IsNullOrEmpty(propertyName)) { PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName); return (_findedPropertyInfo != null ); } return false ; } } static void Main( string [] args) { User u = new User(); bool isContain= u.ContainProperty( "Name" ); // true } |
希望本文所述对大家C#程序设计有所帮助。
原文链接:https://www.cnblogs.com/willingtolove/p/12198871.html