[英]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.