如何在C#中导入静态类?

我创建了一个公共静态类utils.cs我想使用它在其他类没有前缀方法与utils,这是什么语法?
Jon Skeet不告诉你的是,你可以在c#中拥有全局静态成员。你的实用程序类确实可以在c#中成为现实。

不幸的是,微软已经确定,建立这样的成员的过程只是“正常”的发展,并要求你从原始的中间语言中挖掘出来。这样一个强大的模式是通常的语法高亮和友好的图标)。

这是utf-8字符的必要顺序(小心谨慎):

.assembly globalmethods {}

.method static public void MyUtilMethod() il managed 
{
  ldstr "Behold, a global method!"
  call void [mscorlib]System.Console::WriteLine(class System.String) 
  ret
}

(您可以通过从SDK命令提示符调用ilasm.exe来编译此示例,记住使用/ dll开关)

ilasm.exe输出:

Microsoft(R).NET Framework IL汇编器。版本2.0.50727.4016
版权所有(c)微软公司。版权所有。
将’globalmethods.msil’组装到DLL – > ‘globalmethods.dll’
源文件是ANSI

global.msil(7):warning – 引用未声明的extern程序集’mscorlib’。
尝试自动检测

组装全局方法MyUtilMethod

创建PE文件

发射类:

发射领域和方法:
全球方法:1;

发射事件和属性:
全球
写PE文件
操作成功完成

编译新创建的程序集(例如“globalmethods.dll”)后,只需在Visual Studio中添加引用即可。当这完成时,你最好坐下来,因为这将是时候写一些真正的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace TestGlobalMethod
{
    class Program
    {
        static void Main(string[] args)
        {

            "MyUtilMethod".Call();

            Console.ReadKey();

        }

    }

    /// <summary>
    /// Reduces the amount of code for global call
    /// </summary>
    public static class GlobalExtensionMethods 
    {
        public static void Call(this string GlobalMethodName)
        {
            Assembly.Load("globalmethods")
                .GetLoadedModules()[0].GetMethod(GlobalMethodName)
                    .Invoke(null,null);

        }

    }


}

是的,你刚刚在c#中调用了一个Global方法。

*请不要使用它,这只是例子:-)另外,你可能用另外一种支持它们的语言编写你的全局方法,比如VB.NET。

翻译自:https://stackoverflow.com/questions/1423809/how-to-import-a-static-class-in-c

转载注明原文:如何在C#中导入静态类?