我试图为Color
静态类编写一个简单的扩展方法,它返回相当于该颜色的黑色和白色。
问题是扩展方法无法返回静态类型...
那么,我该怎么做?!请帮我。
答案 0 :(得分:8)
问题是NO方法可以返回静态类型。静态类是无状态的(或只有静态状态),因此只有一个“实例”可以从引用命名空间的任何代码全局访问。
你可以返回一个颜色;虽然Color类本身具有静态成员,但它本身并不是静态的,因此可以存在很多Color的实例。您还可以将扩展方法应用于颜色。如果这样做,那么你可以在非静态Color结构的一个静态成员上调用扩展方法:
public static class MyColorsExtensions
{
public static Color ToGreyScale(this Color theColor) { ... }
}
...
var greyFromBlue = Color.Blue.ToGreyScale();
答案 1 :(得分:4)
如果您指的是System.Drawing.Color
- 它不是静态类......它是一个结构。您应该能够从方法返回它的实例。恰好Color
结构包含代表specific colors
的静态成员 - 例如:Color.Black
和Color.White
。
如果您没有提及该类型,请发布失败代码的简短示例。
答案 2 :(得分:1)
很难理解你想说的是什么,但是如果你试图为静态类创建扩展方法,那是不可能的,因为扩展方法适用于类实例。
答案 3 :(得分:0)
这是你要找的吗?这是一个返回静态颜色结构的扩展方法。
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();
}
答案 4 :(得分:-2)
试试这个
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;
}