我正在对各种类型进行一些简单的完整性验证。我正在进行的当前测试是检查以确保填充了它们的属性。在这种情况下,填充被定义为不为空,长度大于零(如果是字符串),或者不等于 0(如果是整数)。
此测试的“棘手”部分是某些属性不受此检查的影响。现在我使用一个巨大的 if 语句来清除不需要检查的属性。
//Gets all the properties of the currect feature.
System.Reflection.PropertyInfo[] pi = t.GetProperties();
for(int i = 0; i < pi.Length; i++)
{
if(!pi[i].Name.Equals("PropertyOne")
&& !pi[i].Name.Equals("PropertyTwo")
&& !pi[i].Name.Equals("PropertyThree")
//... repeat a bunch more times
&& !pi[i].Name.IndexOf("ValueOne") != -1
&& !pi[i].Name.IndexOf("ValueTwo") != -1
//... repeat a bunch more times
{
//Perform the validation check.
}
}
在进行分析时,我注意到 if 语句实际上比反射执行得更差(并不是说反射非常快)。有没有更有效的方法来过滤几种不同类型的属性?
我考虑过一个庞大的正则表达式,但我不确定如何格式化它,而且考虑到它的大小,它可能不可读。我也考虑过将值存储在 List 中,然后使用 Linq,但我不确定如何处理使用 String.IndexOf() 来查找属性是否包含某个值的情况。
提前致谢。