.net 什么';什么是全局方法?
net中的全局方法是什么?我说的是用这个方法创建的.net 什么';什么是全局方法?,.net,.net,net中的全局方法是什么?我说的是用这个方法创建的 这些方法可以从C#或其他.net语言调用吗?全局方法意味着可以在不完全限定其名称的情况下调用该方法 方法(Param)而不是Module.Method(Param) 在vb中,模块内的公共方法是全局的 在c#中,静态类中的公共静态方法是全局的。很难用熟悉的术语谈论这一点,这种功能在c#或VB.NET语言中根本没有公开。但是,C++/CLI编译器使用它。它在诸如Ildasm.exe或Reflector之类的反汇编程序中的显示方式也没有标准化 也许
这些方法可以从C#或其他.net语言调用吗?全局方法意味着可以在不完全限定其名称的情况下调用该方法 方法(Param)而不是Module.Method(Param) 在vb中,模块内的公共方法是全局的
在c#中,静态类中的公共静态方法是全局的。很难用熟悉的术语谈论这一点,这种功能在c#或VB.NET语言中根本没有公开。但是,C++/CLI编译器使用它。它在诸如Ildasm.exe或Reflector之类的反汇编程序中的显示方式也没有标准化 也许最佳角度是反射器,请查看System.Data.dll程序集。它位于反射器中的未命名命名空间(“-”)
节点中。您看到的.cctor有一个模块初始值设定项。与静态类构造函数相同,但在模块级别。它在加载程序集时运行。C++/CLI使用它初始化C运行时库
您在这里找到的uuuuu cxcalunwinddtor()方法是“全局方法”的一个示例。C++/CLI语言没有提供任何方式使这些函数公开,它们总是嵌入到具有内部可访问性的元数据中。因此不能直接从C#或VB.NET程序调用。我对ModuleBuilder的使用还不够深入,不知道除了C++/CLI之外,它是否会受到影响。这一切都非常模糊,实际上也没有那么有用。首先,在C#(我也认为是VB)中,如果不使用类名限定公共静态方法,就不能从其他类调用它们。第二,也是更重要的一点,DefineGlobalMethod是在模块生成器(不是一个静态类的VB模块)上调用的,而不是在类生成器上调用的-因此该方法不会在类中。在VB中,您完全可以在不限定类名的情况下调用模块方法。我原以为C#中就是这样,但显然C#中的静态类与VB中的模块处理方式不同。我站在VB前面纠正了错误。您确定这就是
DefineGlobalMethod
所做的吗?因为这些方法仍然属于VB模块,而且DefineGlobalMethod
直接位于DLL上。查看System.Data让我大开眼界。有一些方法被定义为public,但我无法从C#访问它们。