我有下面的類專營:C#:獲取屬性的名稱,並檢查它的價值
public class Franchise
{
public string FolderName { get; set; }
public string InstallerExeName { get; set; }
}
我有檢查在數據庫中的所有特權中uniqness特定的屬性值的方法。
public bool ValidateFolderName(string folderName)
{
var allFranchises = _franchiseService.GetAll();
var result = allFranchises.Any(f => f.FolderName == folderName);
return result;
}
的問題是我要檢查他人財產爲uniqness:
public bool ValidateInstallerExeName(string installerExeName)
{
var allFranchises = _franchiseService.GetAll();
var result = allFranchises.Any(f => f.InstallerExeName == installerExeName);
return result;
}
我想通過一個通用的方法,以避免重複代碼。喜歡的東西:
public bool ValidateProperty(string propertyName)
{
var allFranchises = _franchiseService.GetAll();
// Not sure how to write this line
var result = allFranchises.Any(f => f.[propertyName] == propertyName);
return result;
}
的問題是我不知道如何重新寫這行代碼,以便它可以獲取屬性名稱和所提供的參數檢查其值:
var result = allFranchises.Any(f => f.[propertyName] == propertyName);
我知道我可以做這樣的事情與反思:
franchise.GetType().GetProperty(propertyName).GetValue(franchise, null);
,但我不知道我怎樣才能使這個適合我的情況。任何工作示例的幫助將不勝感激。謝謝!
謝謝你的回答!我試過你的例子,但它只能在.net 4.5版本的框架中使用。看來'propertyInfo.GetValue(f)'在4.0(我正在使用)中沒有采用相同的參數。 – Mdb
@Mdb是的,似乎4.0缺少這個單參數過載。我修改了這個例子,現在可以和4.0一起使用。 – mrzli
是的,我查看了文檔並修復了這個問題。再次感謝你! – Mdb