如何在c#中检查对象是不是没有空属性[重复]
Posted
技术标签:
【中文标题】如何在c#中检查对象是不是没有空属性[重复]【英文标题】: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# 社区的其他成员似乎不同意
【参考方案1】:
您可以结合使用反射和System.Linq.Expressions
来生成一个接受PostedData
的lambda,并检查每个属性是否为空。正确处理有点棘手,但与仅使用反射来查询属性相比,它会为您提供最佳性能。
【讨论】:
谢谢肖恩,我会将其标记为正确答案,因为它已被标记为重复。以上是关于如何在c#中检查对象是不是没有空属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章