C# 显示错误“Delegate 'System.Func<...>”不接受 1 个参数
我正在调用:
form = new FormFor<Project>()
.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;
}
}
但它一直告诉我 Delegate 'System.Func
,我不确定为什么。有人能为我解释一下吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它尝试将此 lambda 表达式: 转换
为
Expression>
。我们暂时忽略表达式树位 - 委托类型
Func
表示不带参数并返回TEntity
的委托。您的 lambda 表达式x => x.Name
显然需要一个参数(x
)。我怀疑你想要或类似的东西,但目前还不清楚你想要做什么。
It's trying to convert this lambda expression:
into an
Expression<Func<TEntity>>
.Let's ignore the expression tree bit for the moment - the delegate type
Func<TEntity>
represents a delegate which takes no arguments, and returns aTEntity
. Your lambda expressionx => x.Name
clearly is expecting a parameter (x
). I suspect you wantor something similar, but it's not really clear what you're trying to do.
表达式“x => x.Name”的类型不是
Expression
,而是Expression>
。我想,你应该更改 Set 方法的声明:Type of expression "x => x.Name" is not
Expression<Func<TEntity>>
, butExpression<Func<TEntity, string>>
. I suppose, you should change declaration of Set method:Func
是一个带有零个参数的委托,并返回一个TEntity
类型的对象。您试图提供一个x
并且不返回任何内容。Func<TEntity>
is a delegate taking zero parameters and returns an object of typeTEntity
. You are trying to supply anx
and return nothing.