Extension методи- за какво служат и как се използват?

+10 гласа
104 прегледа
попитан 2016 юни 1 в Обща дискусия от Rado.T. (1,360 точки)

Какъв е смисълът от extension методи, при положение, че можем да си напишем метода в самия клас? 

2 отговори

+3 гласа
отговорени 2016 юни 2 от valeri.hristov (7,340 точки)

Extension(или разширяващите) методи се използват, когато имаш вече компилирана библиотека, най-често чужда, и нямаш достъп до кода в нея. С extension методите можеш да добавиш своя функционалност към даден клас без да се налага да пипаш по кода вътре в него и да се налага ново компилиране.

За пример ще използвам класа String. Той е вграден в .NET и не можеш да променяш нищо по него. За създаването на extension метод ти трябват няколко стъпки:

  • Създаваш статичен клас

static class ExtensionMethods

{

}

  • Създаваш статичен метод, който за първи параметър приема типа, който искаш да разшириш, като преди него използваш this:

    public static void MyExtensionMethod(this String str)

    {

        Console.WriteLine("My extension method is working!");

    }

Общо взето това е. Остава само да го извикаш.Те се дефинират статични, но се извикват като инстанционни.

string a = "";

 a.MyExtensionMethod();

Като резултат на конзолата ще се изпише „My extension method is working!"

0 гласа
отговорени 2016 юни 10 от Warrior (1,720 точки)
Друга причина да използваш extension method е, ако класът, към когото искаш да добавиш някаква нова функционалност не може да бъде наследен и да допишеш твоя логика (да му направиш wrapper). Това е случаят, в когото класът е дефиниран като sealed. Класът string e подходящ пример за това. Тогава extension method-ът решава този проблем.
...