【发布时间】:2014-06-28 10:11:42
【问题描述】:
我有这样的课:
public class Test
{
public string STR1{ get; set; }
public INT INT1{ get; set; }
public DOUBLE DBL1{ get; set; }
public DATETIME DT1{ get; set; }
}
通常,在保存对象之前,我必须检查该类中的所有属性,如果有任何空/空属性,则返回警告消息。有一个简单的方法可以通过简单地检查每个属性来做到这一点:
if (string.IsNullOrEmpty(t.STR1))
return "STR1 is empty"
if (t.INT1 == 0)
return "INT1 = 0";
if (t.DBL1 == 0)
return "DBL1 = 0";
if (t.DT1 == DateTime.MinValue)
return "DT1 is empty"
但是如果我的类有更多的属性,实际上它现在包含大约 42 个属性,并且还在增长。所以我正在考虑一种“更清洁”的方式来执行此检查,我发现这个主题与我的问题相似:Reflection (?) - Check for null or empty for each property/field in a class?
但是这个解决方案不能满足我的需要,因为我必须列出 = null/empty string/0/DateTime.MinValue 的值
相信我,我想发布我的“尝试过的代码”,但我无法为这个任务找出一个合理的 LINQ 查询(我是 C# 的新手)
非常感谢任何帮助!
【问题讨论】:
-
所以不要使用 LINQ 查询,而是使用带有一些反射的普通循环?检查每个属性的类型并使用适当的默认值。或者只是检查
default(),因为这是你每次都使用的。 -
@hoangnnm 您可以将属性上的属性用作默认值。然后检查一个属性的当前值是否不等于它的默认值。
-
@JeroenVannevel 很抱歉没有提到,我确实使用了一个普通的循环,就像你上面所说的那样。我在问题中的例子不是我现在使用的,它只是表达我的问题的一种方式。我真正关心的是我能否使用 LINQ 实现这一目标。
-
不过默认值也是个好主意,谢谢!
标签: c# linq reflection