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