如何获取引用字段的属性

时间:2010-02-10 13:26:02

标签: c# reflection attributes fieldinfo

我有一个问题: 是否有一种在引用字段上获取属性的优雅方式。 即:

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

如何在方法Do()中获取字段的属性?

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用ref string field签名无法做到这一点。属性应用于声明(字段,类,事件等),而不是“实例”。

可以做什么,改变你的方法是这样的:

private void Do(Type fieldContainingType, string fieldName, ref string field)

然后使用反射检查fieldContainingType以查看哪些属性应用于名为fieldName的字段。然而,这种方法极其脆弱,而且通常非常糟糕。