cha*_*dmk 5 c# reflection attributes
给出以下类定义
public class MyClass
{
[System.ComponentModel.Browsable(true)]
[field:NonSerialized]
public event EventHandler MyEvent;
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中的其他地方,我想看到事件的属性.
var attributes = typeof(MyClass)
.GetEvents()
.SelectMany(n => n.GetCustomAttributes(true));
Run Code Online (Sandbox Code Playgroud)
但我只看到BrowsableAttribute属性集合.
如何获取field:NonSerialized属性信息?
该field:语法意味着该属性附加到编译器生成的字段(以支持该字段)。您永远不会知道这个字段的名称,因为它是一个实现细节,并且它不是的一部分EventInfo(因为事件不需要专门由字段支持 - 它可以被代理,或者等等EventHandlerList)。
如果您需要该级别的信息,您可能需要手动实现该事件(而不是如图所示的“类似字段的事件”),但是;事实上,您很少需要知道这一点。这些信息实际上只有等人才需要BinaryFormatter,以表示“放手”。
另一种方法是使用GetFields(), 但再次; 不存在将字段映射到事件的可靠方法。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |