从 documentation :
不幸的是,它没有阐明在这种情况下“上下文”的含义。有人可以举例说明何时使用此属性吗?
最佳答案
在使用远程处理的情况下,该属性很重要,例如从 MarshalByRefObject 派生的类。然后,您的代码将使用客户端程序中的代理,这是一个看起来与原始类完全相同的假类对象,但其方法由 CLR 实现,并将方法参数序列化为在服务器上运行的实际对象。通常在另一台机器上。
字段在这样的类中是一个问题,它们不能用替代方法伪造。这是抖动处理的事情。当它检测到对 MRBO 对象中的字段的访问时,它不会生成直接读/写该字段的代码,而是调用 CLR 中的辅助方法。它知道对象是代理还是真实对象,并直接返回字段值或进行远程调用。
这当然会增加开销,这是一个可以非常频繁访问的静态字段的问题。 [ContextStatic] 属性表示您不关心实际的静态字段值,它的本地副本就足够了。或者,如果出于某种原因在本地跟踪状态很重要,则可以有意使用它。我想不出一个很好的例子。框架程序员也没有,它不在框架代码中的任何地方使用。
关于c# - ContextStaticAttribute 究竟是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15927864/