获取属性类

本文关键字:属性 获取 | 更新日期: 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. 但是你为什么要这样做呢?你想实现什么?

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

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