gpt4 book ai didi

c# - 在 C# 程序集的上下文中,激活作用域指的是什么?

转载 作者:行者123 更新时间:2023-11-30 16:37:05 25 4
gpt4 key购买 nike

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

Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. They provide the common language runtime with the information it needs to be aware of type implementations.

Assemblies in .NET

最佳答案

是的,这是模糊的。

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

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

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

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

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

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

无论哪种情况,您都在“激活”来自特定程序集的对象。因此,程序集定义了类型“激活”的“范围”。

关于c# - 在 C# 程序集的上下文中,激活作用域指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59221757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com