如何定义属性来读取属性,而不实例化对象?

2023-12-12

假设我有:

class Person
{
[ColumnAttribute("ID"]
    public int Id;
[ColumnAttribute("Name"]
public string Name;
[ColumnAttribute("DateOfBirth"]
    public date BirthDate;
}

我想读取某些属性的属性,但不实例化 Person 对象。举例来说,我想读取 Name 属性上定义的属性。但我希望它像 ReadAttribute(Person.Name) 一样,而不创建对象。

为什么我想要那个?因为此 Person 对象是我正在创建的框架的实体对象,并且我希望能够定义要对 DAL 层的返回进行排序的列。

我不想传递字符串,因为这样当我更改数据库等时字符串就会不同步。

那么这可能吗? dal的函数是Person.GetAllByAge(int Age, /不知怎的,我想在这里定义排序/)
如果有其他方法可以解决这个问题,我将很高兴听到。我正在考虑使用表达式树,但我也被困在那里。
thanks

Edit:

谢谢大家的回答,但问题不在于阅读属性。
我想在打电话给达尔时拨打类似的电话
Dal.Person.GetAllByAge(25, 出生日期)
这将返回按姓名排序的所有 25 岁的人
目前可以通过调用来完成
Dal.Person.GetAllByAge(25, "出生日期")
thanks


此外皮特·M的回答你可以通过Func<T1,T2>用于IEnumerable<T>.OrderBy进入您的方法,并在您的方法中排序

public IEnumerable<Person> GetAllByAge<T>(int age, Func<Person,T> orderBy)
{
   var people = ... (get your collection of 'age' aged people here)
   return people.OrderBy(orderBy);
}

那么用法就是Dal.Person.GetAllByAge(25,p => p.BirthDate)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义属性来读取属性,而不实例化对象? 的相关文章

随机推荐