【发布时间】:2016-02-25 19:38:43
【问题描述】:
我认为这是一个相当基本的问题,但要么我的大脑还没有醒来,要么我只是太厚了!
我有一个类,它具有下面定义的字符串集合的属性(名称已简化)
public class IdentifierCollection : BaseSubCollection, IIdentifierCollection
{
public string Id1{ get; set; }
public string Id2{ get; set; }
public string Id3{ get; set; }
// ...
}
我想在保存之前检查是否有任何属性实际上有一个值,所以我目前正在做这样的事情......
if (string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id3) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id4) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id5) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id6) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id7) &&
string.IsNullOrEmpty(primaryObj.Identifiers?.Id8))
{
}
只是打字感觉不对!!一定有更好的办法……
【问题讨论】:
-
为什么你有编号的属性?为什么不使用字典或列表?如果你不能丢失它们,你可以使用反射来查找和检查属性。
-
@CodeCaster 我想知道这是否是 "(names simplfied)" 的效果。如果它不是,那么很可能对 Q 有一个非常不同的答案,即你的建议......
-
是的,实际名称是我正在研究的名称,但我隐约感到自信
-
但是使用反射会比丑陋的代码更昂贵......还是不?
-
您实际上是在某处通过名称访问这些属性,还是字典仍然是一种选择?并定义“昂贵”。是的,反射“相对较慢”,但它由运行时缓存各种对象提供支持。
标签: c# null-check