繁体   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