c# - 检查类字段事件背后生成字段的属性

标签 c# reflection attributes

给定以下类定义

public class MyClass
{
    [System.ComponentModel.Browsable(true)]
    [field:NonSerialized]
    public event EventHandler MyEvent;
}

在我的代码的其他地方,我想查看事件的属性。

var attributes = typeof(MyClass)
                     .GetEvents()
                     .SelectMany(n => n.GetCustomAttributes(true));

但我在该属性集合中只看到 BrowsableAttribute

如何获取 field:NonSerialized 属性信息?

最佳答案

field: 语法表示属性附加到由编译器生成的字段(以支持该字段)。你永远不会知道这个字段的名称,因为它是一个实现细节,它不是 EventInfo 的一部分(因为事件不需要专门由字段支持 - 它可以是代理,或 EventHandlerList 等)。

如果您需要该级别的信息,您可能希望手动实现该事件(而不是如图所示的“类似字段的事件”),但是;实际上,您很少需要知道这一点。此信息确实只有 BinaryFormatter 等需要,以表示“放开手”。

另一种方法是使用 GetFields(),但又一次;不存在将字段映射到事件的可靠方法。

关于c# - 检查类字段事件背后生成字段的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9065692/

相关文章:

c# - 在 listview winform c# 中列出 S3 Bucket 键

C# 接口(interface)太死板

java - 属性未在自定义 ArrayList 扩展类上序列化

python - Cython:内存 View 的大小属性

c# - 以编程方式为营销人员保存 Sitecore Web 表单

c# - 文本差异算法

c# - 创建类时如何确定类的实例化名称

java - 如何获取类及其父类(super class)的注释列表

c# - 创建类型的实例,作为方法的参数提供

ruby - Ruby 模型的数组属性