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>>Или что-то подобное, но не совсем ясно, что вы пытаетесь сделать.
Типа выражение "х => х.Название" не
Expression<Func<TEntity>>, ноExpression<Func<TEntity, string>>. Полагаю, вам следует изменить объявление метода Set:public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
Func<TEntity>является делегатом, принимающим нулевые параметры и возвращающим объект типаTEntity. Вы пытаетесь поставитьxи ничего не возвращаете.
Comments