Extension Metod nedir? Nasıl Yazılır? Nasıl Kullanılır?

  • 12.02.2016 14:00
  • C Sharp
  • 4374

Extension metodlar herhangi bir yeni nesne oluşturmadan, üzerinde işlem yaptığınız nesne üzerinden çağrılabilen "genişletilmiş" manasına gelen çok pratik metodlardır. Bu metodları kullanarak hem extra iş yükünden kurtulmuş olursunuz, hem de sürekli aynı kodları yazmak zorunda kalmazsınız.

Extension metodlar statik metodlar ve statik classlardan oluşmaktadır. Fakat referans olarak oluşturduğunuz obje üzerinden çağrılırlar. Extension metodların aldığı ilk parametre, bu metodun hangi nesne üzerinde çalışacağını belirtir. Ve alacağı ilk parametrenin önüne "this" anahtar kelimesi getirilir. Böylece metodun bu nesne üzerinde işlem yapacağı belirtilmiş olur.

Extension metodların kullanımı da çok kolaydır. Extension metodları kullanacağınız kaynak koda, using anahtar kelimesini kullanarak eklediğinizde bu metodlarınızı kullanabilirsiniz. Bu kadar açıklamadan sonra artık uygulamaya geçebiliriz.

Extension metod eklemenin ilk adımı normal bir class ekler gibi projemize class ekliyoruz. Ben extension metodlarımı saklamak için kullanacağım classa HelpExtensions adını vereceğim. Eklediğimiz bu class statik olmak zorunda. Ve daha sonra yukarıdaki yönergelere uygun şekilde metodlarımızı yazabiliriz. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FvrNews.Library.CustomModels.Extensions {
    public static class HelpExtensions {

        public static int ToInt32(this string s) {
            return Convert.ToInt32(s);
        }
    }
}

Yukarıdaki kodu inceleyecek olursak, bahsettiğim gibi HelpExtensions adında bir class oluşturdum. Dikkat ederseniz classım statik. Daha sonra bu metodun string tipindeki değerler üzerinde kullanılacağını belirttim, metoda verdiğim parametrenin önüne this anahtar kelimesini getirerek(this string s). Geri dönüş tipi olarak ta int olduğunu belirttim.

Bu metodu yazarak her defasında string bir değeri int değere çevirmek için kod yazmakla uğraşmayacağım. String nesne üzerinden ToInt32 metodunu kullanarak direkt geri dönen değeri alabileceğim. Aşağıda da metodun kullanım biçimini görebilirsiniz.

using System.Linq;
using System.Web.Mvc;
using FvrNews.Library.CustomModels.Extensions; //Extension metodumun bulunduğu namespace
using FvrNews.Library.Services;

namespace TheLira.Controllers {
    public class PageController : Controller {
        public ActionResult GetPage(string pageSefLink,string[] idArray) {

            //String nesne üzerinden çağırdığım ToInt32 metodu
            int firstId = idArray.First().ToInt32();
            
            return View(new PageService().GetPageByID(firstId));
        }
    }
}

Aklınıza takılan her türlü soruyu yorum veya iletişim sayfası aracılığı ile bildirebilirsiniz.

Bu yazıya yapılan yorumlar:

  • Asım Dinke

    29.11.2018 13:48

    Harika faydalı bir yazı olmuş. Elinize sağlık hocam.

Siz de düşüncelerinizi yazabilirsiniz:

;