C# отображение ошибки "делегировать" систему.Func ' не принимает 1 аргументов
Я призываю:
form = new FormFor<Project>()
.Set(x => x.Name, "hi");
где проект имеет поле с именем 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
и я не уверен, почему. Кто-нибудь может пролить свет на это дело?
3 ответов
он пытается преобразовать лямбда-выражение:
x => x.Name
на Expression<Func<TEntity>>
.
давайте проигнорируем бит дерева выражений на данный момент-тип делегата Func<TEntity>
представляет делегат, который не принимает никаких аргументов и возвращает TEntity
. Ваше лямбда-выражение x => x.Name
явно и ожидание параметра (x
). Я подозреваю, что вы хотите
Expression<Func<TEntity, string>>
или что-то подобное, но это не совсем ясно, что вы пытаетесь сделать.
тип выражения " x => x.Имя " не Expression<Func<TEntity>>
, а Expression<Func<TEntity, string>>
. Я думаю, вы должны изменить объявление метода:
public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
Func<TEntity>
- Это делегат принимает нулевые параметры и возвращает объект типа TEntity
. Вы пытаетесь поставить x
и ничего не вернуть.