C#扩展可以推断出泛型类型吗?

时间:2014-07-11 15:36:17

标签: c# extension-methods

我一直在做一些搜索,并对我找到的答案感到困惑。请原谅我缺乏技术术语。

我正在为Mvc写一个扩展程序。

public static MvcHtmlString FormTextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
    var attr = expression.GetAttribute<TModel, TProperty, HtmlPropertyAttribute>();

    return helper.TextBoxFor(expression, new { placeholder = attr.Value });
}

public static T GetAttribute<TModel, TProperty, T>(this Expression<Func<TModel, TProperty>> expression)
            where T : Attribute
        {
            var memberExpression = expression.Body as MemberExpression;
            if (memberExpression == null)
                throw new InvalidOperationException("Expression must be a member expression");

            return memberExpression.Member.GetAttribute<T>();
        }

我想知道的是,我是否可以快速将TModel和TProperty传递到我的第二个扩展名,因为该参数已包含该信息。

基本上我想转这个

expression.GetAttribute<TModel, TProperty, HtmlPropertyAttribute>();

进入这个

expression.GetAttribute<HtmlPropertyAttribute>();

0 个答案:

没有答案