cor*_*ore 2 c# extension-methods
我通常非常谨慎地使用扩展方法.当我觉得有必要编写扩展方法时,我有时想要重载该方法.我的问题是,您对扩展方法调用其他扩展方法有何看法?不好的做法?这感觉不对,但我无法真正定义原因.
例如,第二个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;
}
Run Code Online (Sandbox Code Playgroud)
不这样做会更合适吗?缺点是它违反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;
}
Run Code Online (Sandbox Code Playgroud)
我不得不说DRY控制在这里.就个人而言,我认为扩展方法调用另一个扩展方法没有错,特别是如果其他扩展包含在同一个程序集中.总而言之,方法调用只是由编译器从:
extended.ExtensionMethod(foo);
Run Code Online (Sandbox Code Playgroud)
至:
StaticType.ExtensionMethod(extended, foo);
Run Code Online (Sandbox Code Playgroud)
我没有看到将两个静态方法链接在一起的任何问题,所以传递上,我没有看到链接两个扩展方法的问题.
归档时间: |
|
查看次数: |
874 次 |
最近记录: |