Har*_*old 12 c# asp.net-mvc lambda
我打电话给:
form = new FormFor<Project>()
.Set(x => x.Name, "hi");
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但它一直告诉我Delegate 'System.Func<ProjectSupport.Core.Domain.Project>' does not take 1 arguments,我不确定为什么.有人能为我解释一下吗?
Jon*_*eet 20
它试图转换这个lambda表达式:
x => x.Name
Run Code Online (Sandbox Code Playgroud)
变成一个Expression<Func<TEntity>>.
让我们暂时忽略表达式树位 - 委托类型Func<TEntity>表示一个不带参数的委托,并返回一个TEntity.你的lambda表达式x => x.Name显然需要一个参数(x).我怀疑你想要
Expression<Func<TEntity, string>>
Run Code Online (Sandbox Code Playgroud)
或者类似的东西,但是你要做的事情并不是很清楚.
小智 5
表达式 "x => x.Name" 的类型不是Expression<Func<TEntity>>,而是Expression<Func<TEntity, string>>。我想,您应该更改 Set 方法的声明:
public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17490 次 |
| 最近记录: |