2012-09-18 15 views
22

kullanarak almak için nasıl böyle bir sınıf Hava:tüm statik özellikleri ve bir sınıfın değerlerini yansımasını

public class tbl050701_1391_Fields 
{ 
    public static readonly string StateName = "State Name"; 
    public static readonly string StateCode = "State Code"; 
    public static readonly string AreaName = "Area Name"; 
    public static readonly string AreaCode = "Area Code"; 
    public static readonly string Dore = "Period"; 
    public static readonly string Year = "Year"; 
} 

Ben bu değerleri baktığı Dictionary<string, string> döndüren bazı ifadeyi yazmak istiyorum:

Key       Value 
-------------------------------------------- 
"StateName"     "State Name" 
"StateCode"     "State Code" 
"AreaName"      "Area Name" 
"Dore"       "Period" 
"Year"       "Year" 

public static string GetValueUsingReflection(object obj, string propertyName) 
{ 
    var field = obj.GetType().GetField(propertyName, BindingFlags.Public | BindingFlags.Static); 
    var fieldValue = field != null ? (string)field.GetValue(null) : string.Empty; 
    return fieldValue; 
} 

alabilirim nasıl

bir özellik değerini almak için bu kodu var tüm özellikleri ve değerleri?

+0

Bunlar statik özellikler değil, statik özelliklerdir. Ikisini de ister misin Veya sadece alanlar? – CodesInChaos

cevap

39

Tüm önerileri ve değerlerini nasıl alabilirim? ile başlayan Eh

, sen alanlar ve özellikleri birbirinden ayırt etmek gerekir. Görünüşe göre burada tarlaların var. Bu yüzden:

public static Dictionary<string, string> GetFieldValues(object obj) 
{ 
    return obj.GetType() 
       .GetFields(BindingFlags.Public | BindingFlags.Static) 
       .Where(f => f.FieldType == typeof(string)) 
       .ToDictionary(f => f.Name, 
          f => (string) f.GetValue(null)); 
} 
+1

teşekkürler, benim için çalıştı – Rana

İlgili konular