C#显示错误';代表';System.Func<&燃气轮机';不接受1个参数
我打电话:C#显示错误';代表';System.Func<&燃气轮机';不接受1个参数,c#,asp.net-mvc,lambda,C#,Asp.net Mvc,Lambda,我打电话: form = new FormFor<Project>() .Set(x => x.Name, "hi"); form=newformfor() .Set(x=>x.Name,“hi”); 其中Project有一个名为Name的字段,FormFor的代码为: public class FormFor<TEntity> where TEntity : class { FormCollection form
form = new FormFor<Project>()
.Set(x => x.Name, "hi");
form=newformfor()
.Set(x=>x.Name,“hi”);
其中Project有一个名为Name的字段,FormFor的代码为:
public class FormFor<TEntity> where TEntity : class
{
FormCollection form;
public FormFor()
{
form = new FormCollection();
}
public FormFor<TEntity> Set(Expression<Func<TEntity>> property, string value)
{
form.Add(property.PropertyName(), value);
return this;
}
}
公共类表单,其中tenty:class
{
表格收集表格;
公共表格
{
form=新FormCollection();
}
集合的公共表单(表达式属性,字符串值)
{
Add(property.PropertyName(),value);
归还这个;
}
}
但它一直告诉我,
Delegate'System.Func'不接受1个参数,我不确定为什么。有人能帮我解释一下吗?它正试图转换这个lambda表达式:
x => x.Name
转换为表达式
让我们暂时忽略表达式树位-委托类型Func
表示不带参数的委托,并返回一个tenty
。您的lambda表达式x=>x.Name
显然需要一个参数(x
)。我猜你想要
Expression<Func<TEntity, string>>
表达式
或者类似的操作,但并不清楚您想做什么。Func
是一个接受零参数的委托,返回一个类型为tenty
的对象。您试图提供一个x
,但不返回任何内容。表达式类型“x=>x.Name”不是表达式,而是表达式。我想您应该更改Set方法的声明:
public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
集合的公共表单(表达式属性,字符串值)