架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 31067|回复: 2

[资料] c#通过反射来判断属性是否赋值

[复制链接]
发表于 2016-8-17 09:23:15 | 显示全部楼层 |阅读模式
QQ截图20160817091822.jpg


由于,我定义了一个实体,属性比较多,如果一个一个的判断是否赋值了,太麻烦了,

怎么办???自己写个方法呗。

但是,问题又来了,我想设置有些属性可以为空怎么办????可以为空的属性,请放到string[]里面传过去,就不会判断了

code如下:

  1. A a = new A
  2.             {
  3.                 a1 = true,
  4.                 a2 = "1111"
  5.             };
  6.             bool reslut1 = IsClassNull<A>(a, null);
  7.             bool reslut2 = IsClassNull<A>(a, new string[] { "a3" });
复制代码


  1. public class A
  2.     {
  3.         public bool a1 { get; set; }

  4.         public string a2 { get; set; }

  5.         public string a3 { get; set; }
  6.     }
复制代码



方法如下:

  1. /// <summary>
  2.         /// 反射判断对象属性是否赋值
  3.         /// </summary>
  4.         /// <typeparam name="T"></typeparam>
  5.         /// <param name="t"></param>
  6.         /// <param name="canNull"></param>
  7.         /// <returns></returns>
  8.         public bool IsClassNull<T>(T t,string[] canNull) where T : class
  9.         {
  10.             Type type = typeof(T);
  11.             PropertyInfo[] ps = type.GetProperties();
  12.             foreach (PropertyInfo info in ps)
  13.             {
  14.                 if (canNull != null && canNull.Contains(info.Name))
  15.                 {
  16.                     continue;
  17.                 }
  18.                 else
  19.                 {
  20.                     object o = info.GetValue(t, null);
  21.                     if (o == null)
  22.                     {
  23.                         return false;
  24.                     }
  25.                 }   
  26.             }
  27.             return true;
  28.         }
复制代码






上一篇:webapi 无法将多个参数(sb和sb1)绑定到请求的内容
下一篇:.net/c#模拟post登陆apple苹果网站,并获取用户信息
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-9-22 12:44:43 | 显示全部楼层
c#类的属性值自动进行拼接成post字符串
http://www.itsvse.com/thread-3124-1-1.html
(出处: 码农网)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-3-8 11:57:40 | 显示全部楼层
mark
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-9-1 22:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表