是否可以在属性构造函数的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
}
}
答案 0 :(得分:3)
属性实例完全独立于它们所装饰的类型/字段/属性;绝对无法从属性访问上下文。但是,在您使用反射显式查询属性之前,的属性也不会被创建。
如果要调用某些逻辑,则必须通过代码显式完成 - 因此您可以考虑在属性上添加一个接受上下文对象的方法:
public void Invoke(object instance) {...}
例如,然后使用GetCustomAttribute获取它,投射它,并调用.Invoke()
答案 1 :(得分:2)
没有。但是你为什么要这样做呢?你想要实现什么目标?
在运行时检索属性时,可以从表示类的类型对象执行此操作。因此,即使信息没有存储在属性对象中,也很容易获得。
答案 2 :(得分:0)
这本来是一个方便的功能,很好的问题。但从根本上说,属性只是作为检查员不是检查员的元数据 - 它们是不变的数据。