什么';这是吗?[字段:SecurityCritical]
本文关键字:字段 SecurityCritical 什么 | 更新日期: 2023-09-27 17:58:23
查看系统。Windows。线程。Dispatcher(由Reflector反编译)我遇到了;
[field: SecurityCritical]
public event DispatcherUnhandledExceptionFilterEventHandler UnhandledExceptionFilter;
我不认识属性声明的"字段"部分,它是什么?
编辑:
这就是它在参考来源中的表现:
public event DispatcherUnhandledExceptionFilterEventHandler UnhandledExceptionFilter
{
[SecurityCritical]
[UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)]
add
{
_unhandledExceptionFilter += value;
}
[SecurityCritical]
[UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)]
remove
{
_unhandledExceptionFilter -= value;
}
}
这只是意味着它将属性应用于支持事件的委托,而不是事件本身。
就像属性语法是一种简写一样,代码
event MyDelegate MyEvent;
实际上是的简写
MyDelegate _BackingDelegate;
event MyDelegate MyEvent
{
add { lock (this._BackingDelegate) this._BackingDelegate += value; }
remove { lock (this._BackingDelegate) this._BackingDelegate -= value; }
}
IIRC*,并且该属性适用于_BackingDelegate
而不是MyEvent
。
*注意:我不确定是否有lock
语句,但我认为有。
field:
被称为属性目标。它允许您指定属性的目标(汇编、返回等)。
请参阅http://msdn.microsoft.com/en-us/library/b3787ac0.aspx了解更多详细信息。
[target : attribute-list]
其中,target是以下内容之一:程序集、字段、事件、方法、模块、参数、属性、返回、类型。
你可以在这里找到可能目标的完整列表:消除属性目标的歧义
SecurityCritical
不能应用于事件。但它可以应用于支持EventHanlder字段。
当您为事件声明属性时,您可以选择将该属性应用于事件本身,或应用于保存事件对生成的add
和remove
方法的委托的字段。说明符field
表示该属性应用于字段。
请参阅MSDN上的消除属性目标的歧义以及此问题。