我通常非常謹慎地使用擴展方法。當我感覺不得不寫一個擴展方法時,我有時想重載這個方法。我的問題是,你對擴展方法調用其他擴展方法有什麼想法?不好的做法?感覺不對,但我無法真正定義原因。C#擴展
例如,第二CaselessIs方法調用第一:
public static bool CaselessIs(this string s, string compareTo)
{
return string.Compare(s, compareTo, true) == 0;
}
public static bool CaselessIs(this string s, IEnumerable<string> compareTo)
{
foreach(string comparison in compareTo)
{
if (s.CaselessIs(comparison))
{
return true;
}
}
return false;
}
難道是比較合適不這樣做呢?不利的一面是它違反了DRY。
public static bool CaselessIs(this string s, string compareTo)
{
return string.Compare(s, compareTo, true) == 0;
}
public static bool CaselessIs(this string s, IEnumerable<string> compareTo)
{
foreach(string comparison in compareTo)
{
if (string.Compare(s, comparison, true) == 0)
{
return true;
}
}
return false;
}
「CaselessIs」不是一個非常直觀的函數名稱。我建議也許將其更改爲「CompareCaseless」 – 2008-10-22 18:55:54