繁体   English   中英

如何在C#中向现有类添加静态扩展方法

[英]How can I add static Extention method to a existing class in C#

例如,我可以使用Color (类似的建筑类)

Color c = Color.GreenSmile();

这是我的扩展方法,但是我不想使用实例。 有可能的?

   public static Color GreenSmile(this Color color)
        {
           return Color.FromArgb(83, 255, 26);
        }

不,您不能省略Color实例,因为扩展方法需要一个其类型作为第一个参数和this关键字扩展的实例。

我想要一个静态方法,使用类的名称。

可以在自己的名称空间中创建一个新的类Color ,尽管这可能会引起混乱。

namespace Drawing.Utilities
{
    internal class Color
    {
        public static System.Drawing.Color GreenSmile()
        {
            return System.Drawing.Color.FromArgb(83, 255, 26);
        }
    }
}

现在,您可以使用此方法,因为它是System.Drawing.Color方法:

var greenSmile = Color.GreenSmile(); // add using Drawing.Utilities;

但是如上所述,这可能会引起混乱,尤其是因为该方法返回的Color类型与其自身不同。 因此,最好为此类使用其他名称( ColorUtility )。

扩展方法不过是需要类实例的静态方法。 但是,在您的情况下,您似乎根本没有使用所提供的实例,因此您可以简单地从method-signature中将其忽略,然后将其转换为普通的静态方法:

public static Color GreenSmile()
{
    return Color.FromArgb(83, 255, 26);
}

现在您可以这样称呼它:

Color c = MyClass.GreenSmile();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM