gpt4 book ai didi

c# - .net 定义采用 lambda 表达式的函数

转载 作者:行者123 更新时间:2023-11-30 15:46:19 25 4
gpt4 key购买 nike

我想定义一个类似于MVC扩展模板函数TextBoxFor的函数

该函数的有趣之处在于我不必指定 TProperty 类型。我如何在我的函数定义中设置它。

我的代码如下:

public class Helper<TItem>
{
public string GetMemberName(Expression<Func<TItem, TProperty>> expression)
{
... returns TProperty.Name

}
}

实际的问题是这不会编译...因为它找不到 TProperty 类型。

我想要的结果是用一个类型定义一次类......然后使用函数 GetMemberName 来获取每个成员的名称,就像在 MVC 框架中一样。

Helper<Employee> h = new Helper<Employee>();
string name = h.GetMemberName(e=>e.Name);
....

我不想在编写代码时被迫指定 TProperty 类型。基本上它可以是任何对象。

谢谢,

拉杜

最佳答案

这是你需要的:

public class Helper<TItem>
{
public string GetMemberName<TProperty>(Expression<Func<TItem, TProperty>> expression)
{
return string.Empty; // I didn't implement it
}
}

只需附加 <TProperty>添加到您的方法名称以使其通用。和 TProperty 的类型可以从提供的表达式中推断出来,所以你在使用时不需要指定它的类型,可以简单地:

Helper<Employee> h = new Helper<Employee>();
h.GetMemberName( e=>e.Name); //if Employee has such a property

关于c# - .net 定义采用 lambda 表达式的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com