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