C#无法在菱形语法中传递propertyInfo.propertyType

时间:2017-01-29 02:11:08

标签: c# model-view-controller reflection

我想在mvc 4中创建动态控件生成器,使用像TextBoxFor()这样的扩展方法在代码中创建控件,但是可以使用我的属性的类型传递菱形语法来创建表达式。 这是我创建表达式的函数。

 private static Expression<Func<IViewModel, TProperty>> createExpression<TProperty>(string propertyName)
    {
        ParameterExpression parameter = Expression.Parameter(myModel.GetType(), "item");
        Expression<Func<IViewModel, TProperty>> lambda;

        lambda = Expression.Lambda<Func<IViewModel, TProperty>>(Expression.PropertyOrField(parameter, propertyName), parameter);

        return lambda;
    }

我的电话

InputExtensions.TextBoxFor(myhelper,createExpression<property.PropertyType>(property.Name);

在菱形语法中我有一个错误,只是我想传递一种属性。

1 个答案:

答案 0 :(得分:0)

泛型类中的任何类型引用都需要在编译时定义。

但是在您的示例中,第二种类型TProperty未定义,但可以包含任何类型,具体取决于property.PropertyType的值