System.Reflection.TargetException错误

时间:2017-06-02 14:18:58

标签: c# properties system.reflection getproperty

我有一个主类,我在我的cleat类属性中循环遍历每个内部属性。我的cleat类中的每个内部属性都是BeltProperty类型(另一个包含value和id等信息的类)。

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。我想知道是否有其他/更好的方法从我的防滑钉类中获取属性。提前感谢您的任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

首先,我会为类和实例选择更好的名称 ObservableCollection<Cleats> Cleats不是直截了当的。

您遇到的问题是由this

中的.GetValue(this, null);参数引起的

此参数应该是您尝试从中读取属性的实例。

整个代码可能如下所示:

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