C#反射错误



当谈到反思时,我是个新手,目前这一切似乎都很令人困惑,所以如果你的一些回复似乎让我更困惑,请原谅我!!!

我目前正在尝试编写一个小脚本,该脚本将根据一个值克隆一个数据表中的数据,然后将所述数据重新插入同一个表中,尽管ID已修改。我目前正在努力使用反射,因为我需要对多个表执行此操作,并且不希望为无数个表编写过多的子句。

到目前为止,我为反射方法编写的代码如下:

public static void CopyData(object sourceObject, object targetObject) 
{
    object[] value = new object[1];
    object[] param = new object[0];
    foreach (PropertyInfo propertyInfo in sourceObject.GetType().GetProperties())
    {
        PropertyInfo targetPropertyInfo = targetObject.GetType().GetProperty(propertyInfo.Name);
        if (targetPropertyInfo.CanWrite && targetPropertyInfo.CanRead)
        {
            value[0] = propertyInfo.GetValue(sourceObject, BindingFlags.Public, null, null, null);
            targetPropertyInfo.SetValue(targetObject, value, null);
        }
    }
}

现在,我将所需的数据传递到这个类中没有问题,但我会遇到以下错误:

Object of type 'System.Object[]' cannot be converted to type 'System.Int32'.

我认为这与用于标识数据中链接的Integer字段有关。重要的是,我要保持这些完整,以便以后处理。

有人能告诉我解决这个问题的正确方向吗????

非常感谢

我假设错误发生在这一行:

targetPropertyInfo.SetValue(targetObject, value, null);

在这一行中,value是一个对象数组。我想它应该是一个int32。你真的打算这么做吗:

targetPropertyInfo.SetValue(targetObject, value[0], null);

这将是写你刚刚从另一个对象中得到的值。

相关内容

  • 没有找到相关文章

最新更新