获取属性类
本文关键字:属性 获取 | 更新日期: 2023-09-27 17:56:13
是否可以
在 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
}
}
属性实例完全独立于它们修饰的类型/字段/属性;绝对无法从属性访问上下文。但是,在使用反射显式查询属性之前,也不会创建属性。
如果要调用某些逻辑,则必须通过代码显式完成 - 因此可以考虑在属性上添加一个接受上下文对象的方法:
public void Invoke(object instance) {...}
例如,然后使用 GetCustomAttribute 获取它、强制转换它并调用 .Invoke()
No. 但是你为什么要这样做呢?你想实现什么?
在运行时检索属性时,可以从表示类的类型对象中检索属性。因此,即使信息未存储在属性对象中,它也很容易获得。
这将是一个方便的功能,不错的问题。但从根本上说,属性只是作为元数据,对检查员来说不是检查员 - 它们是恒定的数据。