循环通过模型检查无效的属性

Nov*_*per 0 .net c# asp.net

我在MVC应用程序中有一个模型Auto,它具有如下属性

public string Id { get; set; }
public bool IsOOS{ get; set; }
public string Make { get; set; }
public string Model { get; set; }
[XmlElement(IsNullable = true)]
public DateTime? RegisteredDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

还有一个有这个......

var a = new Auto(){
Id = someIDcomingfromServer,
IsOOS = someOOScomingFromServer,
... 
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是...循环遍历这些并查看是否有任何属性现在为null.

我如何循环并查看是否有任何属性(Id,IsOOS等)包含null?

谢谢

D S*_*ley 5

那么你可以使用反射来获取所有属性的集合并检查每个属性为null,但为什么不只是显式?

if (Id == null || Make == null || Model == null || RegisteredDate == null)
Run Code Online (Sandbox Code Playgroud)

它更短,更容易理解,没有反射的性能开销,并且不需要那么多的维护.没有"魔法"函数会告诉您类的任何属性是否为null.

我会小心不要以牺牲系统性能为代价来缩短开发时间.在开发中花费一点时间(即使它很繁琐)可以在系统性能上产生巨大的差异.

也就是说,单个Linq查询将是:

bool hasNull = 
    a.GetType()
     .GetProperties()
     .Any(prop => prop.GetValue(a, null) == null);
Run Code Online (Sandbox Code Playgroud)