2011-03-29 24 views
1

我想獲得一個對象類型的屬性值。這裏是我的代碼:如何獲得無類型對象的值?

Type tip = Type.GetType(pair.Key.GetType().ToString()); 

    object uretilenNesne = Activator.CreateInstance(tip); 

uretilenNesne有正確的類型,但我想訪問uretilenNesne的屬性值。你有什麼主意嗎?

KR,

Dakmaz

+3

你或許應該替換'Type.GetType(pair.Key.GetType()的ToString());'和'pair.Key.GetType();' – 2011-03-29 08:09:47

回答

3
  1. 你知不知道你想在編譯時訪問屬性的名稱?如果是,那麼你可以使用dynamic數據類型:如果您知道運行時屬性的名稱

    Type tip = Type.GetType(pair.Key.GetType().ToString()); 
    
    dynamic uretilenNesne = Activator.CreateInstance(tip); 
    
    var x = uretilenNesne.someProperty; 
    
  2. ,你可以使用反射:Type.GetProperty將返回屬性與給定的簽名,可以可通過PropertyInfo.GetValue或SetValue進行訪問。例如:

    Type tip = Type.GetType(pair.Key.GetType().ToString()); 
    object uretilenNesne = Activator.CreateInstance(tip); 
    
    PropertyInfo pinfo = tip.GetProperty("someProperty"); 
    object x = pinfo.GetValue(uretilenNesne, null); 
    
  3. 如果你不知道屬性的名稱,使用Type.GetProperties獲得所有屬性的數組。

+1

+1或者,如果你知道類型你期待在編譯時,你可以投射Activator.CreateInstance的結果 – 2011-03-29 08:20:15