C# Action ve Action ön tanımlı delege türü

22 Ara

Delegeler ile ilgili yazımızda delegeleri tanımlamayı ve kullanmayı incelemiştik. Delegelerin metodları temsil ettiğini ve hangi tür metodların temsil edileceğini ise delegeler oluşturulurken belirlendiğini görmüştük.

Ardından Func<T> ile ilgili yazımızda önceden tanımlanmış delege türü olan Func<T> delege türlerini incelemiştik. Func<T> ile temsil edilen metodların mutlaka bir değer döndürdüğünü belirtimştik.

Bu yazımızda ise delegelerin bir başka özel ve ön tanımlı türü olan Action ve Action<T> delege türünü incelemeye çalışacağız.

Action ve Action<T> delege türleri .Net framework 3.5 ile gelen önceden tanımlanmış bir delege türüdür. Action<T> delege türleri Func<T> delegelerinin aksine hiçbir değer döndürmeyen metodları temsil etmektedir. Action delege türü hiçbir parametre almayan ve değer döndürmeyen metodları temsil eder. Adından da anlaşılacağı üzere bir fonksiyonu değil bir eylemi(action) temsil etmektedirler.

Action<T> delegeleri birden fazla parametre alabilecek metodları da temsil edebilecek şekilde tasarlanmıştır.

Action
Action <T>
Action <T1,T2 >
Action <T1,T2,T3>
Action <T1,T2,…,TN>

Her bir T, metodların alacağı parametrelerin tiplerini belirtmektedir. Func<T> gibi Action<T> kullandığımızda delege tanımlamamıza gerek kalmamaktadır.

Action delegelerinin lambda ifadeleriyle göterimini şu şekilde yapabiliriz:

Lambda ifadelerini kullanmadan metod çağırarak action metod kullanımını şu şeklide kullanabiliriz.

Action delege tipinin kullanımına genelde LINQ ifadeleri ile çalışırken rastlarız. LINQ extension metodlarından Action delege parametre alanlara, uygun metodu parametre olarak gönderebiliriz. Buna bir örnek olarak kişilerin bulunduğu bir listedeki isimlerin önüne “Mr” ön ekini getirerek yazdırmayı deneyebiliriz.

List<T> tipinin ForEach extension metodu, string bir parametre alan metodları temsil etmektedir. Listedeki isimlere tek tek “Mr” ön ekinin nasıl getirildiğini bu şekilde görebilmekteyiz.

Bir sonraki yazıda tekrar görüşmek üzere…

Asp.net MVC Handling Unknown Actions

22 Ağu

Bu yazımızda controller sınıfımızdaki action metodları içinde bulunmayan bir action çağrıldığında bu çağrıyı yakalayıp duruma göre kullanıcıya mesaj verme işleminin nasıl yapılacağı konusuna değiniyor olacağız.

Controller sınıfları HandleUnknownAction() adında protected bir metoda sahiptir.

protected virtual void HandleUnknownAction(string actionName);

Bu metod bir action metodu çağrıldığında eğer istenen action bulunamazssa otomatik olarak devreye girer.örneğin browser üzerinden (/Product/olmayanMetod ) şeklinde olmayan bir action çağrıldığında HandleUnknownAction() metodu çalışacaktır.

Normalde olmayanMetod çağrıldığında metod 404 hatası fırlatmalıdır. Ancak biz HandleUnknownAction() metodunu ezerek kullanıcıya düzgün mesaj bildirimleri ile hataları gösterebiliriz. Özel oluşturduğumuz hata sayfasına yönlendirebiliriz.

    [HandleError]

public class HomeController : Controller

{

public ActionResult Index()       {

ViewData[“Message”] = “Welcome to ASP.NET MVC!”;

return View();

}

protected override void HandleUnknownAction(string actionName)

{

ViewData[“actionName”] = actionName;

View(“Unknown”).ExecuteResult(this.ControllerContext);

}

}