【发布时间】:2013-07-19 15:03:05
【问题描述】:
我有一个在我的自定义 DB ORM 工具中使用的 C# 类,称为 DbFieldAttribute。
我把它放在我的领域,像这样:
[DbField("User_Id")]
public int UserId{ get; set; }
挑战:从我的属性构造器代码中,获取与属性关联的字段的FieldInfo。在上述情况下,它将为我提供 UserId 的 FieldInfo。
任何帮助都会很棒。谢谢。
【问题讨论】:
-
它是一个属性,而不是一个字段,所以通过反射获取所有属性并检查每个
PropertyInfo是否具有所需的自定义属性。 -
属性不会神奇地触发.. 必须有东西触发它们。当您检查属性是否存在时,您可以通过您的属性传递对
PropertyInfo的引用。 -
谢谢。该属性适用于属性和字段,我不小心显示了其中一种属性类型。
-
@Jeppe:用你说的反射获取所有属性,但是我什至如何确定它附加到的对象,然后,我怎么知道我是否正在查看 write 属性?这是最初问题的核心
-
我不确定我是否正确理解了你,但我想你可以做类似
typeof(TheClassYouHave).GetProperties.Where(pi => pi.GetCustomAttributes(typeof(DbFieldAttribute), false).Length != 0)或类似的事情。这只是为您提供了该类的 所有 具有该属性的公共属性。
标签: c# reflection custom-attributes