访问Attribute中的类和属性名称

时间:2011-07-29 00:01:20

标签: c# reflection custom-attributes

有没有办法访问属性中附加属性的类和属性名称?

例如

public class User {
    public string Email { get; set; }
    public string FirstName { get; set; }

    [MyAttrubute]
    public string LastName { get; set; }
}

然后在MyAttribute类中

public class MyAttributeAttribute {
    public MyAttributeAttribute () : base() {
        string className = /*GET CLASS NAME - should return "User" */
        string propertyName = /*GET PROPERTY NAME - should return LastName*/
    }
}

我知道我可以在构造函数中传递信息,但是希望有一种简单的方法可以通过反射或者反复重复输入重新输入信息...

1 个答案:

答案 0 :(得分:7)

抱歉,但不可能。你也可以

public class User {
    public string Email { get; set; }
    public string FirstName { get; set; }

    [MyAttrubute]
    public string LastName { get; set; }
}

[MyAttrubute]
public class OtherClass {

    [MyAttrubute]
    public string AnotherProperty { get; set; }
}

可以从任何地方创建属性。甚至以下是创建实例的有效方法:

var att = new MyAttribute();

您的问题可以归结为"我可以检测自定义类的实例化位置吗?"。在我的上一个例子中,可能会使用StackTrace。但是由于属性是由.NET运行时构造的,所以你无法走那条路。