可能重复:
How do I define a property to read an attribute from, without instantionating an object?
假设我有:
class Person
{
[ColumnAttribute("ID")]
public int Id;
[ColumnAttribute("Name")]
public string Name;
[ColumnAttribute("DateOfBirth")]
public date BirthDate;
}
我有一个DAL,它有一个返回Person对象列表的方法 假设该方法定义为:
Person.GetAllByAge(int Age, ??? SortBy)
此方法将返回具有给定年龄的人员列表,并且它们将按我定义为SortBy
的{{1}}参数进行排序,因为我不知道它应该是什么类型的是。
一个可能的例子是这个函数被定义为:
???
所以示例用法是:
Dal.Person.GetAllByAge(int Age, string SortBy)
但是这个定义不是强类型的,如果我在数据库中更改列名,那么这将在运行时失败。
如何更改此选项以获取要排序的属性而不是字符串?
例如,这样的用法非常好:
Dal.Person.GetAllByAge(25, "DateOfBirth")
或
Dal.Person.GetAllByAge(25, BirthDate)
其中Dal.Person.GetAllByAge(25, p=>p.BirthDate)
是要排序的属性的名称。