我正在對各種類型進行一些簡單的理性驗證。目前我正在進行的測試是檢查以確保其屬性已填充。在這種情況下,填充被定義爲非空,長度大於零(如果是字符串)或不等於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()來查找屬性是否包含特定值的情況。
在此先感謝。