从表达式获取容器类型

时间:2014-10-18 17:57:41

标签: c# asp.net-mvc c#-4.0

在此示例中是否可以获得Type的{​​{1}}?

employee

@Html.MediaFor(x => employee.ProfileImage)的签名是

MediaFor

1 个答案:

答案 0 :(得分:0)

是的,拥有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。为简洁起见,省略了错误检查。