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