什么是全球方法?

con*_*tor 8 .net

什么是.net中的全局方法?我在谈论由该ModuleBuilder.DefineGlobalMethod方法创建的那些.

可以从C#或其他.net语言调用这些方法吗?

Han*_*ant 6

很难用熟悉的术语来谈论这一点,C# 或 VB.NET 语言中根本没有公开此功能。然而,C++/CLI 编译器使用它。它在 Ildasm.exe 或 Reflector 等反汇编程序中的显示方式也没有标准化。

也许最好的角度是 Reflector,看看 System.Data.dll 程序集。它位于未命名的命名空间(Reflector 中的“-”)、<Module>node.js 中。您看到的 .cctor 有一个模块初始值设定项。与静态类构造函数相同类型的动物,但在模块级别。它在程序集加载时运行。C++/CLI 使用它来初始化 C 运行时库。

您发现的 ___CxxCallUnwindDtor() 方法是“全局方法”的示例。C++/CLI 语言没有提供任何方式公开此类函数,它们始终嵌入在具有内部可访问性的元数据中。因此不能直接从 C# 或 VB.NET 程序调用。我对 ModuleBuilder 的使用还不够多,不知道它是否会超出 C++/CLI 的范围。这一切都非常晦涩难懂,实际上并没有那么有用。

  • 查看 System.Data 启发了我。其中有一些方法被定义为公共方法,但我无法找到从 C# 访问它们的方法。 (2认同)