700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C#通过属性名字符串获取 设置对象属性值

C#通过属性名字符串获取 设置对象属性值

时间:2024-08-23 21:56:41

相关推荐

C#通过属性名字符串获取 设置对象属性值

目录

#通过反射获取对象属性值并设置属性值 0、定义一个类1、通过属性名(字符串)获取对象属性值2、通过属性名(字符串)设置对象属性值#获取对象的所有属性名称及类型#判断对象是否包含某个属性

回到顶部

#通过反射获取对象属性值并设置属性值

0、定义一个类

public class User{ public int Id { get; set; }public string Name { get; set; }public string Age { get; set; }}

1、通过属性名(字符串)获取对象属性值

User u = new User();u.Name = "lily";var propName = "Name";var propNameVal = u.GetType().GetProperty(propName).GetValue(u, null);Console.WriteLine(propNameVal);// "lily"

2、通过属性名(字符串)设置对象属性值

User u = new User();u.Name = "lily";var propName = "Name";var newVal = "MeiMei";u.GetType().GetProperty(propName).SetValue(u, newVal);Console.WriteLine(propNameVal);// "MeiMei"

回到顶部

#获取对象的所有属性名称及类型

通过类的对象实现

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

通过类实现

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

回到顶部

#判断对象是否包含某个属性

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;}

将其封装为扩展方法

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}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。