【发布时间】:2012-03-14 07:05:23
【问题描述】:
我想在IEnumerable<Int32> 上覆盖ToString()。
我正在考虑使用扩展方法。
但是当我在下面执行此操作时,它仍然会在 System.Object 上调用 ToString()。当我重命名我的方法时,它会调用我的方法。
由于我的扩展方法在静态类中,我无法覆盖。
例如,当我在 List<Int32> 上调用 .ToString() 时,我该如何实现这一点,以便调用我的 ToString() 实现?
public static class ExtensionMethods
{
public static new string ToString(this IEnumerable<Int32> set)
{
var sb = new StringBuilder();
// Do some modifications on sb
return sb.ToString();
}
}
【问题讨论】:
-
这个问题有点不清楚。您想为
IEnumerable<T>或T(在本例中为Int32)覆盖ToString?请注意,您不能覆盖其中任何一个,但不同的解决方案可能适用于每种情况。 -
我想覆盖“IEnumerable ”上的 ToString()。 (由于某种原因堆栈溢出删除了原文中的
。) -
使用反引号添加内联代码示例,我已经编辑了您的问题,只需点击编辑按钮即可查看我所做的。
标签: c# .net overriding extension-methods