如何使用静态返回类型创建扩展方法?
我试图为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; }