C# 显示错误“Delegate 'System.Func<...>”不接受 1 个参数

发布于 2024-10-20 02:21:05 字数 695 浏览 3 评论 0 原文

我正在调用:

        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'不接受 1 个参数,我不确定为什么。有人能为我解释一下吗?

I am calling:

        form = new FormFor<Project>()
            .Set(x => x.Name, "hi");

where Project has a field called Name and FormFor's code is:

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;
    }
}

but it keeps telling me Delegate 'System.Func<ProjectSupport.Core.Domain.Project>' does not take 1 arguments and I am unsure why. Could anyone shed some light on it for me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

溇涏 2024-10-27 02:21:05

它尝试将此 lambda 表达式: 转换

x => x.Name

Expression>

我们暂时忽略表达式树位 - 委托类型 Func 表示不带参数并返回 TEntity 的委托。您的 lambda 表达式 x => x.Name 显然需要一个参数(x)。我怀疑你想要

Expression<Func<TEntity, string>>

或类似的东西,但目前还不清楚你想要做什么。

It's trying to convert this lambda expression:

x => x.Name

into an Expression<Func<TEntity>>.

Let's ignore the expression tree bit for the moment - the delegate type Func<TEntity> represents a delegate which takes no arguments, and returns a TEntity. Your lambda expression x => x.Name clearly is expecting a parameter (x). I suspect you want

Expression<Func<TEntity, string>>

or something similar, but it's not really clear what you're trying to do.

空宴 2024-10-27 02:21:05

表达式“x => x.Name”的类型不是Expression,而是Expression>。我想,你应该更改 Set 方法的声明:

public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)

Type of expression "x => x.Name" is not Expression<Func<TEntity>>, but Expression<Func<TEntity, string>>. I suppose, you should change declaration of Set method:

public FormFor<TEntity> Set<V>(Expression<Func<TEntity, V>> property, string value)
滥情稳全场 2024-10-27 02:21:05

Func 是一个带有零个参数的委托,并返回一个 TEntity 类型的对象。您试图提供一个 x 并且不返回任何内容。

Func<TEntity> is a delegate taking zero parameters and returns an object of type TEntity. You are trying to supply an x and return nothing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文