C#通过属性名字符串获取、设置对象属性值操作示例
本文实例讲述了C#通过属性名字符串获取、设置对象属性值操作.分享给大家供大家参考,具体如下:
#通过反射获取对象属性值并设置属性值
0、定义一个类
publicclassUser { publicintId{get;set;} publicstringName{get;set;} publicstringAge{get;set;} }
1、通过属性名(字符串)获取对象属性值
Useru=newUser(); u.Name="lily"; varpropName="Name"; varpropNameVal=u.GetType().GetProperty(propName).GetValue(u,null); Console.WriteLine(propNameVal);//"lily"
2、通过属性名(字符串)设置对象属性值
Useru=newUser(); u.Name="lily"; varpropName="Name"; varnewVal="MeiMei"; u.GetType().GetProperty(propName).SetValue(u,newVal); Console.WriteLine(propNameVal);//"MeiMei"
#获取对象的所有属性名称及类型
通过类的对象实现
Useru=newUser(); foreach(variteminu.GetType().GetProperties()) { Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}"); } //propName:Id,propType:Int32 //propName:Name,propType:String //propName:Age,propType:String
通过类实现
foreach(varitemintypeof(User).GetProperties()) { Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}"); } //propName:Id,propType:Int32 //propName:Name,propType:String //propName:Age,propType:String
#判断对象是否包含某个属性
staticvoidMain(string[]args) { Useru=newUser(); boolisContain=ContainProperty(u,"Name");//true } publicstaticboolContainProperty(objectinstance,stringpropertyName) { if(instance!=null&&!string.IsNullOrEmpty(propertyName)) { PropertyInfo_findedPropertyInfo=instance.GetType().GetProperty(propertyName); return(_findedPropertyInfo!=null); } returnfalse; }
将其封装为扩展方法
publicstaticclassExtendLibrary { //////利用反射来判断对象是否包含某个属性 /// ///object /// 需要判断的属性 /// 是否包含 publicstaticboolContainProperty(thisobjectinstance,stringpropertyName) { if(instance!=null&&!string.IsNullOrEmpty(propertyName)) { PropertyInfo_findedPropertyInfo=instance.GetType().GetProperty(propertyName); return(_findedPropertyInfo!=null); } returnfalse; } } staticvoidMain(string[]args) { Useru=newUser(); boolisContain=u.ContainProperty("Name");//true }
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数据结构与算法教程》、《C#遍历算法与技巧总结》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。