0

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

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

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

提前致谢。

4

1 回答 1

0

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

可以做的是改变你的方法,如下所示:

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

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

于 2010-02-10T13:51:24.790 回答