什么是全球性的方法?

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

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


很难用熟悉的术语来谈论这一点,但这种能力在C#或VB.NET语言中完全没有公开。 但是C ++ / CLI编译器使用它。 它在像Ildasm.exe或Reflector这样的反汇编程序中显示的方式也没有标准化。

也许最好的角度是Reflector,请在System.Data.dll程序集中查看。 它位于一个未命名的名称空间(反射器中的“ - ”), <Module>节点中。 您看到的.cctor有一个模块起动器。 同类动物作为静态类构造函数,但在模块级别。 它在程序集加载时运行。 C ++ / CLI使用它来初始化C运行时库。

您在其中找到的___ CxxCallUnwindDtor()方法是“全局方法”的示例。 C ++ / CLI语言没有给出任何公开这些类型的函数的方法,它们总是嵌入在具有内部可访问性的元数据中。 因此不能直接从C#或VB.NET程序调用。 我还没有用ModuleBuilder玩足够多的知识,知道C ++ / CLI以外的东西是否可以混淆。 这一切都很模糊,实际上并没有那么有用。


全局方法意味着该方法可以在没有完全限定其名称的情况下被调用,即

方法(参数),而不是Module.Method(参数)。

在VB中,模块中的公共方法是全局的。

在c#中,静态类中的公共静态方法是全局的。

链接地址: http://www.djcxy.com/p/3031.html

上一篇: What's a global method?

下一篇: Running Visual Studio without admin rights