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

C#无法以菱形语法传递propertyInfo.propertyType,c#,model-view-controller,reflection,C#,Model View Controller,Reflection,我想在MVC4中创建一个动态控件生成器,使用TextBoxFor()等扩展方法在代码中创建控件,但可以在菱形语法中传递我的属性类型以创建表达式。 这是我创建表达式的函数 private static Expression<Func<IViewModel, TProperty>> createExpression<TProperty>(string propertyName) { ParameterExpression paramete

我想在MVC4中创建一个动态控件生成器,使用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;
    }
私有静态表达式createExpression(字符串属性名称)
{
ParameterExpression参数=Expression.parameter(myModel.GetType(),“item”);
表达lambda;
lambda=Expression.lambda(Expression.PropertyOrField(参数,propertyName),参数);
返回lambda;
}
还有我的电话

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

在diamond语法中,我有一个错误,只是我想传递属性的类型。

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


但是在您的示例中,第二个类型
t属性
没有定义,但是可以根据
property的值保存任何类型。PropertyType

这称为泛型。您不能这样做,需要使用反射。