C# ile özel attribute yazardığımızda attribute içerisince o attribute un çalışma zamanında hangi sınıf ve method üzerinde kullanıldığını öğrenebilir miyiz? Bunun için bi yöntem var mıdır?

Mesela şöyle bir örnek vereyim:

class CustomAttribute:Attribute
{
....
}

class Program
{

    [Custom]
    void Main()
    {}
    [Custom]
    void Main2()
    {}
}

Yukardaki örnekte CustomAttribute sınıfı içerisinde o an Main methodunda mı yoksa Main2 methodunda mı olduğunu ve Sınıf ismini almanın bir yolu var mı? Şöyle bir yöntem var: [Custom("Main")] Ama tektek yazmak istemiyorum. Başka bir yöntem arıyorum.

Teşekkür ederim kolay gelsin.

soruldu: 02 Oca '15, 10:03

emrekacan's gravatar image

emrekacan
813304450
cevap kabul oranı: 9%


Postsharp kullanarak Aspect Oriented Programming (AOP) ile yapılabilir. Aşağıda yapmak istediğini anlatan örnek bir kod parçası paylaşıyorum.

using System;
using PostSharp.Aspects;

namespace AspectTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SayHello();

            SayGoodBye();

            Console.ReadKey();
        }

        [Custom]
        private static void SayHello()
        {
            Console.WriteLine("Merhaba dünya");
        }

        [Custom]
        private static void SayGoodBye()
        {
            Console.WriteLine("Güle güle,dünya");
        } 
    }

    [Serializable]
    public class CustomAttribute : OnMethodBoundaryAspect
    {
        public override void OnEntry(MethodExecutionArgs args)
        {
            Console.WriteLine("Başlayan metod = {0}.{1}.", args.Method.DeclaringType.Name, args.Method.Name);
        }

        public override void OnExit(MethodExecutionArgs args)
        {
            Console.WriteLine("Biten metod = {0}.{1}.", args.Method.DeclaringType.Name, args.Method.Name);
        } 
    }

}

postsharp ı aşağıdaki adresten indirip visual studio ya entegre olmasını sağlayabilirsin. Ayrıca postsharp' ın ücretsiz sürümü ile işini görebilirsin para ödemenede gerek yok ;)

visual studio eklentisi

dökümanlar

permanent link

cevaplandı: 02 Oca '15, 12:58

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238
×1

Soruldu: 02 Oca '15, 10:03

Görüntüleme: 713 kez

Son güncelleme: 02 Oca '15, 12:58

powered by BitNami OSQA