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

我很喜欢C#中的扩展方法,但在将扩展方法添加到静态类(例如Console)方面并没有取得成功。

例如,如果我想向控制台添加一个名为“ WriteBlueLine”的扩展,以便可以进行以下操作:

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

我通过添加一个本地的,公共的静态方法(使用Console作为“ this”参数)来尝试了此操作……但是没有骰子!

public static class Helpers {

public static void WriteBlueLine(this Console c, string text)

{

Console.ForegroundColor = ConsoleColor.Blue;

Console.WriteLine(text);

Console.ResetColor();

}

}

这没有向控制台添加’WriteBlueLine’方法…我做错了吗?还是要求不可能?

回答:

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

 public static class ConfigurationManagerWrapper

{

public static ConfigurationSection GetSection( string name )

{

return ConfigurationManager.GetSection( name );

}

.....

public static ConfigurationSection GetWidgetSection()

{

return GetSection( "widgets" );

}

}

以上是 我可以向现有的静态类添加扩展方法吗? 的全部内容, 来源链接: utcz.com/qa/412569.html

回到顶部