如何在不实例化对象的情况下定义属性以从中读取属性?

时间:2011-04-14 15:57:02

标签: c#

  

可能重复:
  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) 是要排序的属性的名称。

0 个答案:

没有答案