C#通过属性名字符串获取、设置对象属性值操作示例

本文实例讲述了C#通过属性名字符串获取、设置对象属性值操作.分享给大家供大家参考,具体如下:

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

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
 }

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数据结构与算法教程》、《C#遍历算法与技巧总结》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • C#动态对象(dynamic)详解(实现方法和属性的动态)

    C#的动态对象的属性实现比较简单,如果要实现动态语言那种动态方法就比较困难,因为对于dynamic对象,扩展方法,匿名方法都是不能用直接的,这里还是利用对象和委托来模拟这种动态方法的实现,看起来有点javascript的对象味道: 1) 定义一个委托,参数个数可变,参数都是object类型:这里的委托多有个dynamic参数,代表调用这个委托的动态对象本身. public delegate object MyDelegate(dynamic Sender, params object[] PMs

  • C#利用反射来判断对象是否包含某个属性的实现方法

    本文实例展示了C#利用反射来判断对象是否包含某个属性的实现方法,对于C#程序设计人员来说有一定的学习借鉴价值. 具体实现代码如下: /// <summary> /// 利用反射来判断对象是否包含某个属性 /// </summary> /// <param name="instance">object</param> /// <param name="propertyName">需要判断的属性</par

  • C#实现读取匿名对象属性值的方法示例总结

    本文实例讲述了C#实现读取匿名对象属性值的方法.分享给大家供大家参考,具体如下: 通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值. var objUser = new {Name="Lilei",Age=18 }; //此时可直接读取匿名类属性 Console.WriteLine("Name:" + objUser.Name);// Name:Lilei 但当将匿名对象转换成object后,就无法直接读取属性值了: static object Ge

  • C#实现获取不同对象中名称相同属性的方法

    本文实例讲述了C#实现获取不同对象中名称相同属性的方法.分享给大家供大家参考.具体如下: [两个类] class demo1 { public string Name { get; set; } public int Age { get; set; } } class demo2 { public string Name { get; set; } public string Address { get; set; } } [初始化数据] List<object> list = new Lis

  • C#通过属性名称获取(读取)属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~ 不得不说反射是一种很强大的技术.. 下面给代码,希望能帮到有需要的人. using System; using System.Collections.Generic; using System.Linq; using Sys

  • C# 获取属性名的方法

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication{    class Program    {        class Test        {            public s

  • C#中使用反射遍历一个对象属性及值的小技巧

    总结: 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): 复制代码 代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi in t.GetProperties()) {     object value1 = pi.GetValue(tc, null));//用pi.GetVal

  • C#编程获取实体类属性名和值的方法示例

    本文实例讲述了C#编程获取实体类属性名和值的方法.分享给大家供大家参考,具体如下: 遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User { public string name { get; set; } public string gender { get; set; } public string age { get; set; } } //实例化类,并给实列化对像的属性赋值: User u = new User(); u.name

  • C#通过属性名字符串获取、设置对象属性值操作示例

    本文实例讲述了C#通过属性名字符串获取.设置对象属性值操作.分享给大家供大家参考,具体如下: #通过反射获取对象属性值并设置属性值 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"

  • spring mvc 实现获取后端传递的值操作示例

    本文实例讲述了spring mvc 实现获取后端传递的值.分享给大家供大家参考,具体如下: jsp页面怎么获取从后端传递过来的值? JSTL 方法获取后端传递的值 @RequestMapping("index1") public ModelAndView index1() { ModelAndView model = new ModelAndView("/Index/index"); model.addObject("msg","my

  • Python面向对象基础入门之设置对象属性

    前言 前面我们已经介绍了 python面向对象入门教程之从代码复用开始(一) ,这篇文章主要介绍的是关于Python面向对象之设置对象属性的相关内容,下面话不多说了,来一起看看详细的介绍吧 用类存储数据 类实际上就是一个数据结构,对于python而言,它是一个类似于字典的结构.当根据类创建了对象之后,这个对象就有了一个数据结构,包含一些赋值了的属性.在这一点上,它和其它语言的struct的作用是类似的:存储数据并提供数据检索功能. 例如,下面是史上最简单的类: class Person: pas

  • Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection<br> * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7-19下午12:42:55 * @param clzzName * @param respXML * @return * @throws ClassNotFoundException * @throws DocumentException * @throws IllegalArgumentE

  • antd Form组件方法getFieldsValue获取自定义组件的值操作

    自定义组件 1.自定义组件被getFieldsValue包裹,会获得以下属性 onChange方法, 子组件调用此方法,可将值传给父组件,从而Form可拿到自定义组件的值 value属性,获得初始值 2.组件调用 像Form表单内的组件一样调用,就可以了 补充知识:Ant Design Pro,用setFieldsValue方法,给嵌套到Form表单中的DatePicker或RangePicker组件设置默认值 其实用setFieldsValue或者获取setState方法都可以设置DatePi

  • Mybatis之Select Count(*)的获取返回int的值操作

    本文将介绍,SSM中mybatis 框架如何获取Select Count(*)返回int 的值. 1. Service 代码: public boolean queryByunitclass(String unitclass, String unitsubclass) throws Exception { int count = matceMachineUnitMapper.queryByunitclass(unitclass, unitsubclass); if (count > 0) { r

  • vuex获取state对象中值的所有方法小结(module中的state)

    目录 vuex获取state对象中的值 直接从store实例取值 使用mapState取值的多种方法 使用module中的state vuex调用state数据 第一种 第二种:利用计算属性 第三种:mapstate 数组 第四种:mapState 对象 第五种:mapState 对象 解构 追加变量 vuex获取state对象中的值 直接从store实例取值 // main.js中,把store注册在根实例下,可使用this.$stroe.state直接取值 export default {

  • Spring实战之获取其他Bean的属性值操作示例

    本文实例讲述了Spring实战之获取其他Bean的属性值操作.分享给大家供大家参考,具体如下: 一 配置 <?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xml

  • PHP面向对象程序设计之对象的遍历操作示例

    本文实例讲述了PHP面向对象程序设计之对象的遍历操作.分享给大家供大家参考,具体如下: 对象的遍历和数组的遍历一样,对象的遍历指的是实例属性的遍历. 下面遍历出来的属性,是在该范围中的"可访问属性"(要考虑访问权限). <?php class A{ public $p1 = 1; protected $p2 = 2; private $p3 = 3; static $p4 = 4; } $obj1 = new A(); foreach($obj1 as $key => $v

  • Java实现对字符串中的数值进行排序操作示例

    本文实例讲述了Java实现对字符串中的数值进行排序操作.分享给大家供大家参考,具体如下: 问题: 对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 解决方法: 先介绍几个eclipse快捷键:输入for再按下"alt+/"可快速写一个for循环 选中某一个小写单词 Ctrl+Shift+x  可变大写,选中某一个大写单词 Ctrl+Shift+y  可变小写 下面请看具体实现代码: import java.util.Arrays; public

随机推荐