这让我疯了。也许我错过了一些明显的东西?
fieldInfo.FieldType是正确的(DateTime),我正在应用的值也是DateTime。
for(int i=0; i<objectArray.Length; i++)
{
FieldInfo destinationField = GetFieldInfo(i);
object destinationValue = objectArray[i];
destinationField.SetValue(this, destinationValue);
}
编辑:即使我将destinationValue设置为文字DateTime(DateTime.Now),我仍然会得到异常!
答案 0 :(得分:1)
我假设您要在对象上设置属性而不是字段(这可能是您的问题)。如果是,那么以下代码可能会有所帮助吗?
public class Order
{
public DateTime OrderDateField;
public DateTime OrderDate { get; set; }
}
object[] orders = new[] { new Order(), new Order(), new Order() };
for (int i = 0; i < orders.Length; i++)
{
FieldInfo fieldInfo = orders[i].GetType().GetField("OrderDateField");
fieldInfo.SetValue(orders[i], DateTime.Now);
PropertyInfo propertyInfo = orders[i].GetType().GetProperty("OrderDate");
propertyInfo.SetValue(orders[i], DateTime.Now, null);
}
这是你想要达到的结果吗?
更新:上面的代码更新了Order对象的属性和字段。
答案 1 :(得分:0)
好的,我已经明白了。
如果您看到此异常,则您使用的FieldInfos很可能不属于与目标相同的对象。的咳嗽强>
非常抱歉,感谢所有帮助过的人。
答案 2 :(得分:-1)
更改
destinationField.SetValue(this, destinationValue);
到
destinationField.SetValue(objectArray[i], destinationValue);
有评论询问'this'参考,但我没有回复回复那里。