Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  .Net'te bir sınıfın üyelerinin listesini almak istediğinizde (ki bu Reflection ile yapılır) filtreleme amacıyla kullanabileceğiniz enumeration.

    public enum BindingFlags
    {
        Default,
        IgnoreCase,          // büyük harf, küçük harf farketmez
        DeclaredOnly,        // inherited memberları boşver
        Instance,            // sadece instance üyeleri getir
        Static,              // sadece static olanları getir
        Public,              // public üyeleri getir
        NonPublic,           // public olmayanları da getir
        FlattenHierarchy,    // erişebildiğin inherited üyeleri de getir
        InvokeMethod,        // çağrılabilen methodları getir (yani ctor'ları falan getirme)
        CreateInstance,      // tipinin instance'ı create edilebilen üyeleri getir
        GetField,            // değer döndürebilen fieldları getir
        SetField,            // değer atanabilen fieldları getir (readonly olmayanlar yani)
        GetProperty,         // getter'ı olan property'leri getir
        SetProperty,         // setter'ı olan property'leri getir
        PutDispProperty,     // COM'la ilgili bu, geç.
        PutRefDispProperty,  // COM'la ilgili bu, geç.
        ExactBinding,
        SuppressChangeType,  // not implemented diyor
        OptionalParamBinding,// çok fazla şey anlatmış, okumaya üşendim
        IgnoreReturn,        // COM'la ilgili (dönüş değeri ignore edilebilen üyeleri getir)
    }


Bu özelliklerden birine veya daha fazlasına uyan üyelerin listesini almak mümkün. Örneğin aşağıdaki kod sadece getter'ı olan public, instance, property'leri döndürür:

MemberInfo[] members = typeof(Form).GetMembers(BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.Public);

Vaktiyle bu enumeration'dan çok çekmiştim. Belirttiğim özelliklere haiz üyeleri döndürmemek suretiyle beni cin atına bindiriyordu. Sonra biraz MSDN okuyup öğrendim ki minimum Instance veya Static'i belirtmek gerekiyormuş. Ben onlardan birini belirtmediğim için saçlarımı yoluyormuşum meğer.
fizikci
15 Ekim 2006 21:50
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.
© 2005, Bilişim Kulübü. (1065 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen