如何使用静态返回类型创建扩展方法?

我试图为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; }