C# 显示错误 'Delegate 'System.Func<...>' 不接受 1 个参数
Posted
技术标签:
【中文标题】C# 显示错误 \'Delegate \'System.Func<...>\' 不接受 1 个参数【英文标题】:C# displaying error 'Delegate 'System.Func<...>' does not take 1 argumentsC# 显示错误 'Delegate 'System.Func<...>' 不接受 1 个参数 【发布时间】:2011-07-07 07:00:03 【问题描述】:我在打电话:
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<ProjectSupport.Core.Domain.Project>' does not take 1 arguments
,我不确定为什么。谁能帮我解释一下?
【问题讨论】:
【参考方案1】:它正在尝试转换这个 lambda 表达式:
x => x.Name
转为Expression<Func<TEntity>>
。
让我们暂时忽略表达式树位 - 委托类型 Func<TEntity>
表示不带参数的委托,并返回 TEntity
。您的 lambda 表达式 x => x.Name
显然 需要一个参数 (x
)。我怀疑你想要
Expression<Func<TEntity, string>>
或类似的东西,但不清楚你要做什么。
【讨论】:
【参考方案2】:表达式“x => x.Name”的类型不是Expression<Func<TEntity>>
,而是Expression<Func<TEntity, string>>
。我想,你应该改变 Set 方法的声明:
public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
【讨论】:
【参考方案3】:Func<TEntity>
是一个接受零参数的委托,并返回一个 TEntity
类型的对象。您正在尝试提供 x
并且不返回任何内容。
【讨论】:
以上是关于C# 显示错误 'Delegate 'System.Func<...>' 不接受 1 个参数的主要内容,如果未能解决你的问题,请参考以下文章
在我的 C# 代码中显示错误“前一个 catch 子句已经捕获了这个或超类型 `System.Exception' 的所有异常”