folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C#'Da Class'ın Propertieslerini Dolaşmak?



C#'Da Class'ın Propertieslerini Dolaşmak?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    Hata loglaması yapıyorumda session'a atadığım bir class daki propertiesleri kolay yoldan loga yazdırmak istiyorum. Class daki propertiesleri kolay olarak for yada foreach ile dolaşmam mümkün mü?

    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ~$
    ComputerWolf
    ComputerWolf's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 26/Mart/2003
    Erkek

    "eventhandler"


    Hep denedin. Hep yenildin. Olsun yine dene , yine yenil ama daha iyi yenil !
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Senin_Class instance = new Senin_Class();
    PropertyInfo[] properties = instance.GetType().GetProperties();

    foreach property in properties

      property nin ise .GetValue()  su olucak. Ise yarar mi ?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

        class A
        {
            public string Pro1
            {
                get { return "value1"; }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                System.Reflection.PropertyInfo[] pi = a.GetType().GetProperties();
                for (int i = 0; i < pi.Length; ++i)
                    Console.WriteLine(pi[0].Name + " " +
                        pi[0].GetValue(a, null).ToString());
                Console.ReadLine();
            }
        }

     

     

    http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

     

    ancak bencede eventhandler mekanizmasi daha uygun olurdu ;-)


    ..
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    Eyvallah yukardaki kodlar işimi görücek ama. Event handler kullanmaktan kastınızı anlamadım?

    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    GrN bunu yazdı:
    -----------------------------

        class A
        {
            public string Pro1
            {
                get { return "value1"; }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                System.Reflection.PropertyInfo[] pi = a.GetType().GetProperties();
                for (int i = 0; i < pi.Length; ++i                  Console.Linepi0.Name + " " +                      pi0.GetValuea, null.To;              Console.ReadLine;                

     

     

    http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

     

    ancak bencede eventhandler mekanizmasi daha uygun olurdu ;-)


    -----------------------------
    Kodda bir hata var p[0] değilde p[i] ile yazılması gerekiyor.

    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    sinirlerim bozukken kod yazmamam gerektigini hatirlattigin icin tesekkur ederim :-)


    ..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    GrN bunu yazdı:
    -----------------------------

    sinirlerim bozukken kod yazmamam gerektigini hatirlattigin icin tesekkur ederim :-)


    -----------------------------
    hocam sinirlerin yumuşakken şu eventhandlerdan kastını açıklarmısın?

    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    simdi eventhandler olayi isin icine giriyosa eger, senin log tutma sekline bagli olarak bu mekanizmanin iyi yada kotu oldugu hakkinda konusabiliriz.

    yani sen belli anlarda(yada belli araliklarla diyelim) sinifin ozelliklerindeki degerleri dosyaya yazacaksan, bunu reflection kutuphanesiyle yaparsin(yani ustte verdigim koddaki gibi).

    ama amacin her(yada herhangi) ozellik bilgisi degistiginde yada belli bi olay gerceklestiginde bunu dosyaya yansitmaksa, eventhandler kullanirsin.

    ornegin A sinifinin Pro1 propertysi degistiginde bunu log dosyasina aninda yansiticaksan, eventhandler mekanizmasi sana daha uygun bi cozum getirir.

    asagida basit bi ornek yaptim konuyla alakali

     

    class A
        {
            public delegate void delProperty_Changed(string name, object value);
            public event delProperty_Changed Property_Changed;
    
            private string m_Pro1;
            public string Pro1
            {
                get { return m_Pro1; }
                set { m_Pro1 = value; Property_Changed("Pro1", value); }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                a.Property_Changed += new A.delProperty_Changed(a_Property_Changed);
                a.Pro1 = "TEST";
    
                Console.ReadLine();
            }
    
            static void a_Property_Changed(string name, object value)
            {
                Console.WriteLine("\n {0}:{1}", name, value);
            }
        }


    ..
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    GrN bunu yazdı:
    -----------------------------

    simdi eventhandler olayi isin icine giriyosa eger, senin log tutma sekline bagli olarak bu mekanizmanin iyi yada kotu oldugu hakkinda konusabiliriz.

    yani sen belli anlarda(yada belli araliklarla diyelim) sinifin ozelliklerindeki degerleri dosyaya yazacaksan, bunu reflection kutuphanesiyle yaparsin(yani ustte verdigim koddaki gibi).

    ama amacin her(yada herhangi) ozellik bilgisi degistiginde yada belli bi olay gerceklestiginde bunu dosyaya yansitmaksa, eventhandler kullanirsin.

    ornegin A sinifinin Pro1 propertysi degistiginde bunu log dosyasina aninda yansiticaksan, eventhandler mekanizmasi sana daha uygun bi cozum getirir.

    asagida basit bi ornek yaptim konuyla alakali

     

    class A
        {
            public delegate void delProperty_Changed(string name, object value);
            public event delProperty_Changed Property_Changed;
    
            private string m_Pro1;
            public string Pro1
            {
                get { return m_Pro1; }
                set { m_Pro1 = value; Property_Changed("Pro1", value); }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                a.Property_Changed += new A.delProperty_Changed(a_Property_Changed);
                a.Pro1 = "TEST";
    
                Console.ReadLine();
            }
    
            static void a_Property_Changed(string name, object value)
            {
                Console.WriteLine("\n {0}:{1}", name, value);
            }
        }


    -----------------------------
    Şimdi anladım hocam kastettiğinizi. Benim bunu istememdeki amaç şeydi Application_Error event'inde oluşan hataları log'latıyorum ve Session'dada UserClass'ı tutuyorum. Loglara daha ayrıntılı bilgi girmek içinde Sessionda tuttuğun Class'ın propertieslerinin o anki durumunuda kaydetmek istemiştim. Eyvallah.

    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
Toplam Hit: 1333 Toplam Mesaj: 10