得到一个属性类

时间:2011-05-13 06:22:10

标签: c# class attributes

是否可以在属性构造函数的C#中获取具有为其分配属性的类,而不必传递该类名。

    [MyAttr]
    public class A{}

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    [Serializable]
    public class MyAttrAttribute: Attribute
    {
        public MyAttrAttribute()
        {
           //get info here about the class A etc
        }    
    }

3 个答案:

答案 0 :(得分:3)

属性实例完全独立于它们所装饰的类型/字段/属性;绝对无法从属性访问上下文。但是,在您使用反射显式查询属性之前,的属性也不会被创建

如果要调用某些逻辑,则必须通过代码显式完成 - 因此您可以考虑在属性上添加一个接受上下文对象的方法

public void Invoke(object instance) {...}
例如,

然后使用GetCustomAttribute获取它,投射它,并调用.Invoke()

答案 1 :(得分:2)

没有。但是你为什么要这样做呢?你想要实现什么目标?

在运行时检索属性时,可以从表示类的类型对象执行此操作。因此,即使信息没有存储在属性对象中,也很容易获得。

答案 2 :(得分:0)

这本来是一个方便的功能,很好的问题。但从根本上说,属性只是作为检查员不是检查员的元数据 - 它们是不变的数据。