我有这个:
foreach (KeyValuePair<string, decimal> update in updates)
{
salesorder.GetType().InvokeMember(update.Key, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, salesorder, update.Value);
}
我在这个网站上找到了这个例子,但是它使用的是一个字符串,我的例子是十进制,但它表示不能从十进制转换为对象[]
由于
答案 0 :(得分:3)
最后一个参数必须是object[]
,所以你需要包装decimal
:
foreach (KeyValuePair<string, decimal> update in updates)
{
salesorder.GetType().InvokeMember(update.Key, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, salesorder, new object[] { update.Value });
}
如果您想更深入地设置值(如评论中所示):
foreach (KeyValuePair<string, decimal> update in updates)
{
var property = salesorder.GetType().InvokeMember(update.Key, BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty, Type.DefaultBinder, salesorder, new object[] { });
property.GetType().InvokeMember("Value", BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, property, new object[] { update.Value });
}