2017-06-02 32 views
0

我有一個主要的類,我在我的cleats類屬性中循環每個內部屬性。我的cleats類中的每個內部屬性的類型都是BeltProperty(另一個類包含值和id之類的信息)。System.Reflection.TargetException錯誤

private ObservableCollection<Cleats> _Cleats = new ObservableCollection<Cleats>(); 
    /// <summary> 
    /// Cleats 
    /// </summary> 
    public ObservableCollection<Cleats> Cleats { get { return _Cleats; } } 

foreach (PropertyInfo prop in typeof(Cleats) 
    .GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)) 
{ 
    BeltProperty bp = new BeltProperty(); 
    bp = (BeltProperty)Cleats[Configurator_2016.Cleats.SelectedConfigurationIndex] 
     .GetType().GetProperty(prop.Name, BindingFlags.Instance | BindingFlags.NonPublic) 
     .GetValue(this, null); 
    //rest of the code... 
} 

在第一BeltProperty它發現它拋出一個System.Reflection.TargetException。我想知道是否有另一種/更好的方法從我的夾板課獲得財產。預先感謝任何幫助或建議。

+0

也許這是因爲你發送的'this'作爲目標參數給'GetValue'方法。但你的代碼不清楚。什麼是Cleats.GetProperties?什麼是Cleats [Configurator_2016.Cleats.SelectedConfigurationIndex]'?一定要發佈所有相關代碼 –

+0

我嘗試使用Cleats而不是getValue,並且仍然有相同的結果。 – andrewvb

+0

@andrewvb'Cleats'的類型是什麼?方法'GetProperties'很奇怪,至少不清楚它的位置。 –

回答

0

嗯,首先,我會選擇類和實例更好的名稱。
ObservableCollection<Cleats> Cleats不是直截了當的。

您遇到的問題是因爲在.GetValue(this, null);

this參數,該參數應該是你正在試圖讀取該屬性的實例。

整個代碼看起來是這樣的:

foreach (PropertyInfo prop in typeof(Cleats) 
    .GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)) 
{ 
    var bp = (BeltProperty)prop.GetValue(Cleats[Configurator_2016.Cleats.SelectedConfigurationIndex]) 
} 
+1

謝謝,您說得對,我的GetValue內容有誤,我不得不指定正確的對象。 – andrewvb