我想定义一个像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