Вы когда-нибудь использовали частные методы расширения? - PullRequest
9 голосов
/ 03 марта 2010

Есть ли преимущество в том, что вы можете использовать приватные методы расширения? Я не нашел для них никакой пользы. Разве не было бы лучше, если бы C # вообще не допускал их?

Ответы [ 3 ]

11 голосов
/ 03 марта 2010

Это полезно для улучшения синтаксиса кода в методе / классе, но вы не хотите показывать функциональность, предлагаемую этим методом расширения, другим областям кодовой базы. Другими словами, как альтернатива обычным частным статическим вспомогательным методам

8 голосов
/ 03 марта 2010

Рассмотрим следующее:

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);
    }
}

Я понимаю, что пример не имеет особого смысла в его текущей форме, но я уверен, что вы можете оценить возможности, которые предоставляют частные методы расширения, а именно возможность иметь открытые методы расширения, которые используют частное расширение для инкапсуляции или состав.

3 голосов
/ 03 марта 2010

Я просто погуглил, чтобы исследовать, так как сомневался, что они им пригодятся Это, однако, отличное иллюстративное приложение для них:

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

...