最近我经常使用扩展方法,并发现它们有很多用途。唯一的问题是我记不住它们在哪里,以及为了获取扩展方法需要使用哪个命名空间。
然而,我最近想到一个办法,就是将扩展方法写在 System 命名空间、System.Collections 命名空间或其他一些有意义的系统命名空间中。例如,我已经实现了以下扩展方法。
namespace System
{
/// <summary>Various array extensions</summary>
public static class ArrayExtensions
{
/// <summary>Converts the array to a hex string</summary>
/// <param name="value">The value.</param>
/// <returns>The array as a hex string</returns>
public static string ToHexString(this byte[] value)
{
var hex = new StringBuilder(value.Length * 2);
foreach (byte b in value)
{
hex.AppendFormat("{0:X2}", b);
}
return hex.ToString();
}
}
}
这样做是正确的吗?
TimeSpan
的示例时,我意识到人们通常想要的不是一堆扩展方法,而是一个新类型,它将提供缺失的功能。 - csharpfolk