在C#的程序集中,激活作用域指的是什么?

问题描述 投票:3回答:1

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

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

Assemblies in .NET

c# .net .net-assembly terminology msdn
1个回答
1
投票

是,这是模糊的。

“ Activation”在CLR或C#中没有确切的技术含义。但这是COM中的技术术语,即组件对象模型,它是Windows固有的Windows组件模型,早于.NET并与之共存。

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

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

在.NET中,类型存在于特定的程序集中,并且类型名称在程序集中是唯一的。在运行时,当前加载到您的AppDomain中的其他程序集中可能包含相同名称的类型。但是,无论何时创建对象实例(即“激活”),都可以指定Type(表示特定的Assembly)或Assembly and Type名称。

通常在代码中编写类型名称的情况下,编译器会识别要用于目标类型的引用程序集,如果在编译时发现了多个具有相同名称的类型,则编译器会警告您CS0436,或错误CS0433

对于反射,可以按名称加载类型,但是始终必须指定一个程序集以从中加载类型。请注意,没有一个仅带有Type名称的Activator.CreateInstance重载,并且Type.GetType还要求您指定一个Assembly。

不管是哪种情况,都是从特定的程序集中“激活”对象。因此,程序集为“激活”类型定义了“作用域”。

© www.soinside.com 2019 - 2024. All rights reserved.