在 C# 中的程序集上下文中,激活范围指的是啥?

Posted

技术标签:

【中文标题】在 C# 中的程序集上下文中,激活范围指的是啥?【英文标题】:In the context of assemblies in C#, what does activation scoping refer to?在 C# 中的程序集上下文中,激活范围指的是什么? 【发布时间】:2020-03-31 22:56:09 【问题描述】:

我正在阅读 C# 文档中关于程序集的文档,并且在没有太多上下文的情况下使用了术语激活范围。我自己理解范围的概念。这是我在其中找到该术语的上下文:

程序集构成基于 .NET 的应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。程序集是一组类型和资源的集合,它们被构建为一起工作并形成功能的逻辑单元。程序集采用可执行 (.exe) 或动态链接库 (.dll) 文件的形式,是 .NET 应用程序的构建块。它们为公共语言运行时提供它需要了解类型实现的信息。

Assemblies in .NET

【问题讨论】:

social.msdn.microsoft.com/Forums/en-US/… 【参考方案1】:

是的,这很模糊。

“激活”在 CLR 或 C# 中没有精确的技术含义。但它是 COM 中的一个技术术语,即组件对象模型,它是先于 .NET 并与 .NET 共存的原生 Windows 组件模型。

在 COM 中,激活的意思是“将对象加载到内存中,使其进入运行状态的过程”。 (https://docs.microsoft.com/en-us/windows/win32/com/com-glossary)

您可以在 System.Activator 类型的命名中看到该术语的保留,它具有与 COM 激活函数 CoCreateInstance 类似的功能。

在 .NET 中,类型存在于特定的程序集中,类型名称在程序集中是唯一的。在运行时,具有相同名称的类型可能包含在当前加载到您的 AppDomain 的其他程序集中。但是每当您创建一个对象实例(即“激活”)时,您要么指定类型(这意味着特定的程序集),要么指定程序集和类型名称。

在代码中编写类型名称的正常情况下,编译器将识别要为目标类型使用哪个引用的程序集,如果在编译时发现多个具有相同名称的类型,编译器会给你一个警告CS0436,或错误CS0433。

在反射的情况下,您可以按名称加载类型,但您始终必须指定一个程序集来加载类型。请注意,没有仅采用类型名称的 Activator.CreateInstance 重载,Type.GetType 还要求您指定一个程序集。

在任何一种情况下,您都是从特定程序集中“激活”对象。因此,大会为“激活”类型定义了“范围”。

【讨论】:

以上是关于在 C# 中的程序集上下文中,激活范围指的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

交换机设置中的STP指的是啥

ES6 中的箭头函数中的“this”指的是啥?

JavaScript进入函数上下文到底指的是啥?

java中的“char”指的是啥?

编程中的固定装置是啥?

C# 或 .NET 中的程序集到底是啥?