[英]How can I create extension methods with static return type?
我試圖為Color
靜態類編寫一個簡單的擴展方法,該方法返回與該顏色等效的黑白。
問題在於擴展方法無法返回靜態類型...
那么,我該怎么辦呢? 請幫我。
問題在於NO方法可以返回靜態類型。 靜態類是無狀態的(或只有靜態),因此只有一個“實例”,該實例可以從引用該命名空間的任何代碼中全局訪問。
您可以返回顏色; 雖然Color類本身具有靜態成員,但它不是靜態的,因此可以存在很多Colors實例。 您還可以將擴展方法應用於顏色。 如果這樣做,則可以在非靜態Color結構的靜態成員之一上調用擴展方法:
public static class MyColorsExtensions
{
public static Color ToGreyScale(this Color theColor) { ... }
}
...
var greyFromBlue = Color.Blue.ToGreyScale();
如果您指的是System.Drawing.Color
它不是靜態類...它是一個結構。 您應該能夠從方法返回它的實例。 碰巧的是, Color
結構包含表示specific colors
靜態成員,例如: Color.Black
和Color.White
。
如果您不使用該類型,請發布失敗代碼的簡短示例。
很難理解您要說的是什么,但是如果您嘗試為靜態類創建擴展方法,那是不可能的,因為擴展方法用於類實例。
這是您要找的東西嗎? 這是一個返回靜態顏色結構的擴展方法。
public static class ColorExtensions
{
private static Color MYCOLOR = Color.Black;
public static Color BlackAndWhiteEquivalent(this Color obj)
{
// stubbed in - replace with logic for find actual
// equivalent color given what obj is
return MYCOLOR;
}
}
和測試
[Test]
public void FindBlackAndWhiteColorEquivalent()
{
Color equivalentColor = Color.Black.BlackAndWhiteEquivalent();
}
嘗試這個
public static class Colores
{
public static Color Rojo = Color.FromArgb(0xE51600);
public static Color Azul = Color.FromArgb(0x004183);
public static Color Verde = Color.FromArgb(0x00865A);
public static Color Plata = Color.FromArgb(0xC4C5C7);
public static Color Gris = Color.FromArgb(0x58585A);
public static Color Cafe = Color.FromArgb(0x632600);
public static Color Negro = Color.Black;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.