鑑於這種代碼:是否可能表達<Func <T, TProp>>的集合?
public class PaginationModel<T> : BaseModel
{
public List<T> Rows { get; set; }
public PagingInfo PagingInfo { get; set; }
public void AddColumn<TProp>(Expression<Func<T, TProp>> column)
{
}
}
我希望能夠通過列的集合使用代碼
leadListOutputModel.AddColumn(x => x.DateCreated);
然後在我的MVC視圖循環,並調用針對的對象表達,但是因爲TProp是在方法調用中推斷出來的,所以它似乎無法存儲爲通用字段,例如
private List<Expression<Func<T, TProp>>> columns = new List<Expression<Func<T, TProp>>>();
任何人都可以想到一個解決方法,而不使用對象或失去通用的好處嗎?
---編輯
我試圖做兩件事情,
首先,我傳遞過「SortBy」 paramater我控制器這需要字符串的屬性名稱,目前正在通過((MemberExpression)表達式).Member.Name提取,其次我想使用Func在我的MVC視圖中提取該字段的值。
原因是我正在做一個分頁的網格,我想在控制器中使用一個很好的語法來配置列,比如我給的AddColumn示例。我想查看Columns來創建標題行,然後在我的Models集合中循環遍歷這些行,然後調用Func來提取值。
我想說'List >>',但是您建議失去一個通用'TProp'的好處。你能詳細說明一下嗎?它有什麼好處? –
hvd
2012-07-31 13:35:55
Re:你的編輯:是的;我以前做過。您需要一組非通用接口,並使用泛型AddColumn方法創建泛型實現。 – SLaks 2012-08-02 15:55:47