你有没有使用过私人扩展方法?

时间:2010-03-03 11:35:31

标签: c# extension-methods

是否有选择使用私有扩展方法的优势?我没有发现任何用途。如果C#根本不允许它们会不会更好?

3 个答案:

答案 0 :(得分:11)

这有助于改进方法/类中的代码语法,但您不希望将该扩展方法提供的功能公开给代码库的其他区域。换句话说,作为常规私有静态辅助方法的替代方法

答案 1 :(得分:8)

请考虑以下事项:

public class MyClass
{
    public void PerformAction(int i) { }
}

public static class MyExtensions
{
    public static void DoItWith10(this MyClass myClass)
    {
        myClass.DoIt(10);
    }

    public static void DoItWith20(this MyClass myClass)
    {
        myClass.DoIt(20);
    }

    private static void DoIt(this MyClass myClass, int i)
    {
        myClass.PerformAction(i);
    }
}

我意识到这个例子在当前的形式中没有多大意义,但我相信你可以理解私有扩展方法提供的可能性,即能够使用私有扩展来进行封装的公共扩展方法或组合物。

答案 2 :(得分:3)

我只是用Google搜索调查,因为我怀疑它们有多大用处。然而,这对他们来说是一个很好的说明性应用:

http://odetocode.com/blogs/scott/archive/2009/10/05/private-extension-methods.aspx