SORU
9 Temmuz 2011, CUMARTESİ


Yansıma özelliği öznitelik adı ve değer elde

Dersim var, hadi Kitap arama özelliği Adı ile. Bu özellik ile, bir öznitelik ile ilişkili.

public class Book
{
    [Author("AuthorName")]
    public string Name
    {
        get; private set; 
    }
}

Benim ana yöntem, yansıtma kullanarak ve her öznitelik anahtar değer çifti almak isteyen her özellik için geldim. Bu örnekte, "" adı özniteliği "özniteliği değeri. AuthorName Yazar beklerdim yani

Nasıl benim özellikleri öznitelik adı ve değer Yansıma kullanarak alabilir miyim? soru:

CEVAP
9 Temmuz 2011, CUMARTESİ


typeof(Book).GetProperties() PropertyInfo örnekleri bir dizi elde etmek için kullanın. O GetCustomAttribute() PropertyInfo her eğer bunlardan herhangi Author Öznitelik türü olup olmadığını görmek için kullanın. Eğer yaparlarsa, emlak bilgi mülkü ve öznitelik öznitelik değerleri adına alabilirsiniz.

Bir şey bu doğrultuda Tarama türü için özellikleri olan bir özel öznitelik türü ve dönmek veri sözlüğü (not bu yapılabilir daha dinamik geçerken tip olarak rutin):

    public static Dictionary<string, string> GetAuthors()
    {
        Dictionary<string, string> _dict = new Dictionary<string, string>();

        PropertyInfo[] props = typeof(Book).GetProperties();
        foreach (PropertyInfo prop in props)
        {
            object[] attrs = prop.GetCustomAttributes(true);
            foreach (object attr in attrs)
            {
                AuthorAttribute authAttr = attr as AuthorAttribute;
                if (authAttr != null)
                {
                    string propName = prop.Name;
                    string auth = authAttr.Name;

                    _dict.Add(propName, auth);
                }
            }
        }

        return _dict;
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • androidandme

    androidandme

    10 Mart 2009
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012