我有以下兩種方法從我的數據庫中獲取數據,並返回一個填充的SelectList對象(包括一個「All」選項值),然後傳遞到我的視圖。問題是它們幾乎與它們都訪問不同的存儲庫對象並且它們具有不同的ID名稱(StatusId和TeamId)的例外幾乎相同。我認爲有機會將它們重構爲一個單一的方法,接受存儲庫作爲參數,並以某種方式找出ID名稱應該是什麼,可能通過使用反射或某種lambda表達式,但我不知道如何來完成這一點。重構生成SelectList到單個方法的兩種方法
private SelectList GetStatusSelectList(int selectedStatusId)
{
List<MemberStatus> statusList = _memberStatusRepository.All().ToList();
statusList.Insert(0, new MemberStatus {StatusId = 0, Name = "All"});
var statusSelectList = new SelectList(statusList, "StatusId", "Name", selectedStatusId);
return statusSelectList;
}
private SelectList GetTeamSelectList(int selectedTeamId)
{
List<MemberTeam> teamList = _memberTeamRepository.All().ToList();
teamList.Insert(0, new MemberTeam { TeamId = 0, Name = "All" });
var teamSelectList = new SelectList(teamList, "TeamId", "Name", selectedTeamId);
return teamSelectList;
}
任何人都可以幫助弄清楚如何將這些重構成單一的方法嗎?
您是否可以編輯這些類,即添加接口? – 2011-12-27 20:43:00
是的...... _memberTeamRepostiory和_memberStatusRepository實現一個IRepository接口。該接口具有與數據庫交互的所有方法,包括像IQueryable All()這樣的方法,該方法只返回給定TEntity的_dbSet。 –
bigmac
2011-12-27 20:47:39
MemberTeam和MemberStatus怎麼樣 - 你可以直接修改它們還是使用部分類來修改它們? – foson 2011-12-27 20:50:19