c# - 如何将静态扩展方法添加到 C# 中的现有类
问题描述
例如,我可以使用Color
(这样的建筑类)
Color c = Color.GreenSmile();
这是我的扩展方法,但我不想使用实例。有可能的?
public static Color GreenSmile(this Color color)
{
return Color.FromArgb(83, 255, 26);
}
解决方案
不,您不能省略Color
实例,因为扩展方法需要它作为第一个参数和this
关键字扩展的类型的实例。
我想要一个静态方法,使用类的名称。
您可以在它自己的命名空间中创建一个新类Color
,尽管这可能会引起混淆。
namespace Drawing.Utilities
{
internal class Color
{
public static System.Drawing.Color GreenSmile()
{
return System.Drawing.Color.FromArgb(83, 255, 26);
}
}
}
现在您可以使用此方法,因为它是一种System.Drawing.Color
方法:
var greenSmile = Color.GreenSmile(); // add using Drawing.Utilities;
但如上所述,这可能会导致混淆,特别是因为该方法返回的Color
-type 与其自身不同。所以为这个类(ColorUtility
)使用不同的名字当然更好。
推荐阅读
- tsql - Incorrect syntax near 'CAST' Error while using dynamic sql
- angular - 将 angular.json 转换为 angular-cli.json?
- azure - 使用 Microsoft 帐户登录 Azure AD V2 应用
- excel - 如何清理这段代码以使其更容易和更具适应性?
- javascript - Trying to make a super simple clicker game but im getting NaN instead of numbers
- python - pandas: How to search by a list of values and return in the same order?
- c - 打印菜单功能选择后继续打印
- java - 如何在 bat 文件的帮助下从 java 程序启动/停止 tomcat 服务?
- python - 如果我启动一个烧瓶应用程序,它显示两个进程正在运行
- angular - How can I use ViewChildren to get multiple native elements using template variables?