簡體   English   中英

如何創建具有靜態返回類型的擴展方法?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM