【问题标题】:How to check if an object has no null properties in c# [duplicate]如何在c#中检查对象是否没有空属性[重复]
【发布时间】:2019-08-31 22:38:36
【问题描述】:

我正在编写一个看起来像这样的路由函数:

    public IHttpActionResult SomeRoute([FromBody] PostedData postedData)

FromBody 属性会将发布到路由中的数据转换为指定的类型,并将无法以这种方式强制转换的任何属性设置为 null。

我要做的是检查发布的数据上是否有任何空属性(上例中的postedData)。因为我知道类型,我可以手动检查每一个,但我希望能够以更通用的方式实现这样的检查,我想知道这是否可能。

【问题讨论】:

  • 这可能不是重复的,但肯定是正确的开始路径。
  • 因为看起来您正在使用 WebApi,所以惯用的方法是使用 [Required] 之类的属性装饰您的 PostData 视图模型的属性,然后您将能够检测到 null(并且其他无效数据)通过ModelState
  • 我不得不说,如果应该关闭它,那应该是因为它太宽泛了,因为它肯定不是它被标记的问题的重复。鉴于标记为重复的问题问How to iterate an objects properties,我的问题可能最好问为I have an array of properties, how do I check whether any of them are null,但这并不意味着这是重复的
  • @StuartLC 这听起来很有用;我会调查一下,谢谢
  • @kenny 我同意这不是重复的,但 c# 社区的其他成员似乎不同意

标签: c#


【解决方案1】:

您可以结合使用反射和System.Linq.Expressions 来生成一个接受PostedData 的lambda,并检查每个属性是否为空。正确处理有点棘手,但与仅使用反射来查询属性相比,它会为您提供最佳性能。

【讨论】:

  • 谢谢肖恩,我会将其标记为正确答案,因为它已被标记为重复。
猜你喜欢
  • 2013-12-26
  • 2018-01-01
  • 2020-05-08
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2017-10-09
  • 1970-01-01
相关资源
最近更新 更多