当前位置:  开发笔记 > 编程语言 > 正文

C#扩展

如何解决《C#扩展》经验,为你挑选了1个好方法。

我通常非常谨慎地使用扩展方法.当我觉得有必要编写扩展方法时,我有时想要重载该方法.我的问题是,您对扩展方法调用其他扩展方法有何看法?不好的做法?这感觉不对,但我无法真正定义原因.

例如,第二个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 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 compareTo)
{
    foreach(string comparison in compareTo)
    {
        if (string.Compare(s, comparison, true) == 0)
        {
            return true;
        }
    }

    return false;
}

Marcus Griep.. 9

我不得不说DRY控制在这里.就个人而言,我认为扩展方法调用另一个扩展方法没有错,特别是如果其他扩展包含在同一个程序集中.总而言之,方法调用只是由编译器从:

extended.ExtensionMethod(foo);

至:

StaticType.ExtensionMethod(extended, foo);

我没有看到将两个静态方法链接在一起的任何问题,所以传递上,我没有看到链接两个扩展方法的问题.



1> Marcus Griep..:

我不得不说DRY控制在这里.就个人而言,我认为扩展方法调用另一个扩展方法没有错,特别是如果其他扩展包含在同一个程序集中.总而言之,方法调用只是由编译器从:

extended.ExtensionMethod(foo);

至:

StaticType.ExtensionMethod(extended, foo);

我没有看到将两个静态方法链接在一起的任何问题,所以传递上,我没有看到链接两个扩展方法的问题.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有