快速参考静态方法

Sei*_*ist 0 c# methods reference class shortcut

是否有可能在没有引用其类的情况下调用方法?

例如,你有一个帮助类:

class HelperTools
{
    public static void DoWork()
    { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)

然后你需要调用它:

class MainClass
{
    public static void Main()
    {
        HelperTools.DoWork();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在DoWork();没有参考的情况下打电话?像这样:

public static void Main()
{
    DoWork();
}
Run Code Online (Sandbox Code Playgroud)

只是为了简单起见.

Ste*_*ler 6

不完全,但这里有5种模式可以让你接近:

namespace My.Namespace
{
    using H = MyHelperClass;

    public class MyHelperClass
    {
        public static void HelperFunc1()
        {
            Console.WriteLine("Here's your help!");
        }
    }

    public class MyHelperClass2
    {
        public static void HelperFunc4()
        {
            Console.WriteLine("Here's your help!");
        }
    }

    public interface IHelper{ }

    public static class HelperExtensions
    {
        public static void HelperFunc3(this IHelper self)
        {
            Console.WriteLine("Here's your help!");
        }
    }

    public class MyClass : MyHelperClass2, IHelper
    {
        private static readonly Action HelperFunc2 = MyHelperClass.HelperFunc1;

        private static void HelperFunc5() 
        {
            Console.WriteLine("Here's your help!");
        }

        public void MyFunction()
        {
            //Method 1 use an alias to make your helper class name shorter
            H.HelperFunc1();
            //Method 2 use a class property
            HelperFunc2();
            //Method 3 extend an interface that has extension methods.
            //Note: you'll have to use the this keyword when calling extension
            this.HelperFunc3();
            //Method 4 you have access to methods on classes that you extend.
            HelperFunc4();
            //Method 5 put the helper method in your class
            HelperFunc5();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)