0
在這個例子中是否有可能獲得Type
爲employee
?從表達式中獲取容器類型
@Html.MediaFor(x => employee.ProfileImage)
?
爲MediaFor
簽名是
MediaFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
在這個例子中是否有可能獲得Type
爲employee
?從表達式中獲取容器類型
@Html.MediaFor(x => employee.ProfileImage)
?
爲MediaFor
簽名是
MediaFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
是的,有一個Expression<>
的好處之一是,你可以檢查它的部分。您的訪問者是MemberExpression
,它的Expression
屬性將是該成員訪問的Expression
。因此,檢索了Type
:
例子:
public static Type GetRootType<T1,T2>(Expression<Func<T1,T2>> expr)
{
MemberExpression mex = expr.Body as MemberExpression;
return mex.Expression.Type;
}
當然,這可以擴展到支持不同類型的表達式,示例將只簡單MemberExpression
工作。爲簡潔起見,省略錯誤檢查。
您是否有理由在這裏首先使用表達式? – 2014-10-18 18:05:06
不是真的,我想我可以刪除'Expression',只是用'Func'去用,但這真的會改變什麼嗎? – Marcus 2014-10-18 18:08:50
我得到的是'MediaFor'完全是什麼。爲什麼需要知道類型? – 2014-10-18 18:17:06