【发布时间】:2019-07-15 12:34:30
【问题描述】:
我很难理解 .Net 中的概念执行上下文和仅反射上下文。据我了解,这是加载程序集的两种不同方式,但我无法清楚地定义它们。
关于执行上下文,我能够在 msdn 上找到 ExecutionContext 类的 the documentation,以及关于仅反射上下文,只有 how to load assemblies 进入其中。
谁能提供这两个概念的描述?
【问题讨论】:
-
An execution context is the managed equivalent of a COM apartment.The reflection-only load context allows you to examine assemblies compiled for other platforms or for other versions of the .NET Framework. Code loaded into this context can only be examined; it cannot be executed. This means that objects cannot be created, because constructors cannot be executed.两者都是链接中的引用。 前者可以让你运行。后者可让您检查事物。 -
您几乎已经回答了您的问题:) 仅反射上下文仅用于检查代码以用于反射目的,而不用于代码执行
-
@mjwills 那么这样的上下文是什么?它是每个线程的内存位置吗?它是进程之间共享的一些环境吗?感谢您试图向我提供一些信息,但我之所以问这个问题是因为我不明白这些是什么。
-
@mjwills 我不认为是这样,我正在尝试为这些上下文找到一个定义。我不是想解决任何问题,而是通过一些 msdn 文档找到自己的方法。
-
so what is a context like this? Is it a per thread memory location? Is it some environment shared between processes?简短的回答是——我不相信它是按照实现细节的水平来记录的。因此,虽然我可以描述一个特定的实现是如何起作用的,但这对您没有多大帮助。因此,例如 - 目前不会在进程之间共享 - 但也许将来可能会。