gpt4 book ai didi

c# - 我可以向现有静态类添加扩展方法吗?

转载 作者:行者123 更新时间:2023-11-30 18:26:20 25 4
gpt4 key购买 nike

我是 C# 中扩展方法的粉丝,但在向静态类(例如 Console)添加扩展方法方面没有取得任何成功。

例如,如果我想向 Console 添加一个名为“WriteBlueLine”的扩展,这样我就可以:

Console.WriteBlueLine("This text is blue");

我通过添加本地公共(public)静态方法来尝试此操作,将 Console 作为“this”参数...但没有成功!

public static class Helpers {
public static void WriteBlueLine(this Console c, string text)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(text);
Console.ResetColor();
}
}

这并没有向 Console 添加“WriteBlueLine”方法……我做错了吗?还是要求不可能的事情?

最佳答案

没有。扩展方法需要一个对象的实例变量(值)。但是,您可以围绕 ConfigurationManager 接口(interface)编写一个静态包装器。如果您实现包装器,则不需要扩展方法,因为您可以直接添加该方法。

 public static class ConfigurationManagerWrapper
{
public static ConfigurationSection GetSection( string name )
{
return ConfigurationManager.GetSection( name );
}

.....

public static ConfigurationSection GetWidgetSection()
{
return GetSection( "widgets" );
}
}

关于c# - 我可以向现有静态类添加扩展方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com