2017-02-28 62 views
1

我有一個相當長而笨重的方法,它將一個對象作爲參數,然後根據相同的條件檢查每個屬性(==「random」)並針對該屬性執行特定的操作。如何檢查對象上的多個屬性具有相同的條件?

public void CreateRegistration(UserGroup user, int mobileLength, int passwordLength, int questionLength) { 

    if (user.Title == "random") { 
     title.ClickDropdown(); 
    } else { 
     WebElementExtensions.ClickDropdown(title,user.Title); 
    } 
    if (user.Firstname == "random") { 
     firstName.SendKeys(GenerateData.GenerateRandomName()); 
    } else { 
     firstName.SendKeys(user.Firstname); 
    } 
    if (user.Middlename == "random") { 
     middleName.SendKeys(GenerateData.GenerateRandomName()); 
    } else { 
     firstName.SendKeys(user.Middlename); 
    } 
    etc.... 

是否有可能以某種方式檢查我對同一標準的所有特性一起,然後減少我的代碼,以便所有的個體性質的行爲是相同的代碼塊中?所以一個代碼塊是=隨機的,另一個代碼塊是隨機的。

非常感謝,

+0

查找到的反射,你可以用它來遍歷一個對象的屬性沒有明確列出每一個。 (基本上認爲'foreach(var prop in obj)') – Pat

回答

4

我更喜歡使用LINQ爲此目的通常:

private bool CheckAllProperties(UserGroup instance) 
{ 
    return instance.GetType().GetProperties() 
        .Where(c => c.GetValue(instance) is string) 
        .Select(c => (string)c.GetValue(instance)) 
        .All(c => c== "random"); 
} 

然後:

if (CheckAllProperties(user)) 
{ 

} 
相關問題