例如,我可以使用Color
(这样的建筑类)
Color c = Color.GreenSmile();
这是我的扩展方法,但是我不想使用实例。有可能吗?
public static Color GreenSmile(this Color color)
{
return Color.FromArgb(83, 255, 26);
}
答案 0 :(得分:4)
不,您不能省略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
)。
答案 1 :(得分:0)
扩展方法不过是一个静态方法,可以期望类的实例。但是,在您的情况下,您似乎根本不使用提供的实例,因此您可以简单地从method-signature中忽略它,并将其变成普通的静态方法:
public static Color GreenSmile()
{
return Color.FromArgb(83, 255, 26);
}
现在您可以这样称呼它:
Color c = MyClass.GreenSmile();