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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。