添加扩展方法的方法?

Vac*_*ano 2 c# c#-3.0

假设我有一个名为的类LogHelper,它有一个名为的静态方法GetLogger(string name).

有没有办法添加一个静态扩展方法GetLogger()

我知道通常扩展方法在声明它们时是静态的,但有没有办法在它们"帮助"的类上显示静态?

Dar*_*rov 6

您可以使用扩展方法:

public static class StringExtensions
{
    public static ILogger GetLogger(this string value)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用:

string foo = "bar";
ILogger logger = foo.GetLogger();
Run Code Online (Sandbox Code Playgroud)

  • 但是`GetLogger()`在LogManager上不是静态的.它是字符串上的实例方法. (2认同)

Gag*_*age 5

你也可以使用

    public static ILogger GetLogger(string value)
    {
        ...
    }

    public static ILogger GetLogger()
    {
        return GetLogger("Default Value");
    }
Run Code Online (Sandbox Code Playgroud)

这样当你调用GetLogger()时,它会调用GetLogger(字符串值)但是使用你的默认值.