获取没有直接引用的属性的属性

时间:2010-11-15 08:29:27

标签: c#

如何从DoStuff()方法获取Stuff属性的属性?这可能吗?

public class Bar
{
    public enum FooZ
    {
        Hello,
        GoodBye
    }

    [Display("Hello"]
    public FooZ Stuff { get; set; }

    public Bar() {
        Stuff = FooZ.GoodBye;
    }
}

void Main()
{
    var x = new Bar();

    DoStuff(x.Stuff);
}

void DoStuff(Enum z) {

    // How do I get the DisaplyAttribute from here?
}

2 个答案:

答案 0 :(得分:2)

你做不到。参数z不记得它来自哪里;值不记得它们是如何构造的。请记住,在这种情况下,属性是用属性修饰的(意味着它嵌入在包含类型的元数据中),而不是其getter返回的值。您必须反映Bar类型本身,就像Itay的回答一样。

答案 1 :(得分:1)

Type t = typeof(Bar);
PropertyInfo pi = t.GetProperty("Stuff");
Attribute[] att = pi.GetCustomAttributes(typeof(DisplayAttribute), true);