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 и я не уверен, почему. Может ли кто - нибудь пролить свет на это для меня?

592   3  

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

    Ничего не найдено.