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}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

图中括号中的数字代表的是当前域所占的空间大小&#xff0c;单位是bit位。 黄色的是数据链路层的头部&#xff0c;一共14字节 绿色的部分是IP头部&#xff0c;一般是20字节 紫色部分是TCP头部&#xff0c;一般是20字节 最内部的是数据包内容 黄色部分&#xff1a;链路层 目的MA…

mongodb防火墙配置

http://ruby-china.org/topics/20128 https://docs.mongodb.com/manual/tutorial/configure-linux-iptables-firewall/转载于:https://www.cnblogs.com/diyunpeng/p/6256928.html

【python】动态调用函数名

环境&#xff1a; C:\Users\DELL\Desktop>python -V Python 3.9.10 源码&#xff1a; #!/bin/env python # encoding utf-8 import sys import socket# 获取本机ip地址 def get_host_ip():try:s socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect((8.8.8.8, …

AC Again hdoj 1582 搜索

AC Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 306 Accepted Submission(s): 84 Description “AC”这个单词大概是我们 ACMers 最希望听到的回答了。不过如果把它写下来&#xff0c;你还能认识吗&am…

Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)

TCP/IP参考模型是一个非常基础&#xff0c;而且也非常重要的基础框架&#xff0c;要想入门数通这是个必须掌握的基本概念&#xff0c;本文档通过一个简单的示例&#xff0c;结合参考模型来分析一下数通的基本过程。网络环境非常简单&#xff0c;如下图所示&#xff0c;我们现在…

Python SQLAlchemy --3

本文為 Python SQLAlchemy ORM 一系列教學文&#xff1a; 刪除 學會如何查詢之後&#xff0c;就能夠進行後續的刪除、更新等操作。 同樣地&#xff0c;以幾個範例做為學習的捷徑。 123456789 user_1 User(user1, username1, password_1)user_2 User(user2, username2, passw…

C#DateTime.ToString格式化时间字符串

DateTime.ToString(string format) 中 format 参数&#xff08;区分大小写&#xff09;&#xff1a; 参数 含义 d 月中的某一天。一位数的日期没有前导零。 dd 月中的某一天。一位数的日期有一个前导零。 ddd 周中某天的缩写名称&#xff0c;在 AbbreviatedDayNam…

Wordpress中显示页面当前位置

Wordpress中显示页面当前位置 在浏览网站的时候&#xff0c;很多网站都提供了页面定位的功能&#xff0c;一般在文章的上方以这样的形式显示&#xff1a; 首页 >> 分类 >> 子分类 >> „ >> 阅读正文 那如何在wordpress中实现这样一个功能呢&#xff1…

CentOS8下 nginx+php7.4安装pdo_sqlsrv 连接 SQL SERVER2012数据库

参考自&#xff1a;https://blog.csdn.net/lwprain/article/details/109598560 关键步骤是一二三&#xff0c;结合 pecl install 正常安装(先安装dnf install unixODBC-devel)即可搞定 ------------------------------------------------------------------------------------…

ArcGIS Engine 编辑- ITask

转自原文ArcGIS Engine 编辑- ITask 下面的代码是我们定制的一个工作流-给等高线赋值 namespace EngineApplication { [Guid("5b0c0692-eaf7-4d64-9cee-c8c1afaf06f4")] [ClassInterface(ClassInterfaceType.None)] [ProgId("EditeTest.ContourTask")] pu…

Linux 系统应用编程——网络编程(TCP 协议三次握手过程)

TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议&#xff0c;提供可靠的连接服务&#xff0c;采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示: SYN ( synchronous 建立联机 ) ACK ( acknowledgement 确认 ) PSH ( push 传送…

知识管理在客户关系管理中的应用领域

CRM中的知识获取 CRM前端业务系统&#xff08;包括销售管理、营销管理、客户服务三个模块&#xff09;为与客户互动、获取客户知识提供了各种途径&#xff0c;如销售自动化系统、电子商务网站、呼叫中心、网络社区、博客等等&#xff0c;另外&#xff0c;企业还直接从外部环境、…

基于ELK的简单数据分析

原文链接&#xff1a; http://www.open-open.com/lib/view/open1455673846058.html 环境 CentOS 6.5 64位JDK 1.8.0_20Elasticsearch 1.7.3LogStash 1.5.6Kibana 4.1.4介绍 ElasticSearch是有名的开源搜索引擎&#xff0c;现在很多公司使用ELK技术栈做日志分析&#xff0c;比如…

Linux 系统应用编程——网络编程(高级篇)

一、网络超时检测 在网络通信过程中&#xff0c;经常会出现不可预知的各种情况。例如网络线路突发故障、通信一方异常结束等。一旦出现上述情况&#xff0c;很可能长时间都不会收到数据&#xff0c;而且无法判断是没有数据还是数据无法到达。如果使用的是TCP协议&#xff0c;可…

[win10] 在桌面上显示计算机、控制面板、网络

1. 右击桌面&#xff0c;选择个性化 2. 选择”主题", 点击“桌面图标设置” 3. 把想要放桌面的图标给钩上

linux下共享文件夹(windows可访问,linux也可访问)

2019独角兽企业重金招聘Python工程师标准>>> 本文是转字网上的两段&#xff0c;如果是菜鸟&#xff0c;想懂有点难度&#xff0c;我这里给点注释 在linux上共享文件夹windows下看 ******************************************* 首先给linux设一个ip&#xff0c;要和…

用nginx做了一下反向代理,得到的ip地址都是127.0.0.1

nginx反向代理配置时&#xff0c;一般会添加下面的配置&#xff1a; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; loc…

【windows】 设置开机启动程序

开始 -> 运行&#xff0c;输入&#xff1a;shell:startup 将要启动的“快捷方式”放入此目录下。重启生效&#xff01;

ssh时,密码输入框(密码输入提示)很晚才出现的解决方法

新配置了一台server&#xff08;centos6.2&#xff09;&#xff0c;发现从windows使用putty登录时&#xff0c;在输入用户名后总是很慢才提示输入密码[rootFDFS-1 ~]# ssh -V OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010发现ssh的版本较高了使用另一台linux服务器连接&…

Linux time()函数解析

time() 函数语法如下&#xff1a; 所需头文件#include <time.h>函数原型time_t time(time_t * timer)参数说明timerNULL时得到机器日历时间&#xff1b; timer时间数值时&#xff0c;用于设置日历时间&#xff1b;函数返回值机器日历时间 功能: 获取当前的系统时间&#…