.net中的全局方法是什么?我在谈论ModuleBuilder.DefineGlobalMethod
方法创建的那些。
可以从C#或其他.net语言调用这些方法吗?
答案 0 :(得分:3)
很难用熟悉的术语来谈论这个问题,这种功能完全没有在C#或VB.NET语言中公开。但是,C ++ / CLI编译器使用它。它在Ildasm.exe或Reflector等反汇编程序中显示的方式也没有标准化。
也许最好的角度是Reflector,看看System.Data.dll程序集。它位于未命名的命名空间(Reflector中的“ - ”),<Module>
节点。 .cctor你看到有一个模块initiailizer。与静态类构造函数相同的动物,但在模块级别。它在程序集加载时运行。 C ++ / CLI使用它来初始化C运行时库。
你找到的___ CxxCallUnwindDtor()方法有一个“全局方法”的例子。 C ++ / CLI语言没有任何方法可以公开这些函数,它们总是嵌入到具有内部可访问性的元数据中。因此不能直接从C#或VB.NET程序调用。我没有玩过ModuleBuilder,知道是否可以在C ++ / CLI之外完全搞砸了。这都是非常模糊,实际上并没有那么有用。
答案 1 :(得分:0)
全局方法意味着可以在不完全限定其名称的情况下调用该方法,即
方法(Param)而不是Module.Method(Param)。
在vb中,模块内的公共方法是全局的。
在c#中,静态类中的公共静态方法是全局的。