0
我是個新手,當涉及到的反射和此刻這一切似乎相當混亂所以原諒我,如果你的一些答覆似乎混淆我多一點!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'.
我相信這與整數字段用來識別數據中的鏈接。重要的是我保持這些完好無損,以便日後處理。
可有人請點我的方式來解決這個問題的正確方向????
非常感謝
曾爲許多完美的感謝! – Callum 2012-03-07 11:32:46
@Callum:只是爲了幫助你調試技能一旦錯誤想出了你應該檢查它指向行,然後苦苦思索什麼涉及的類型爲。 'value'有型的唯一對象'對象[]'所以你可以告訴你的是罪魁禍首,從此你可能已經注意到你的錯誤。在這種情況下,'value'並不需要是一個'object'數組,但我認識到你可能有其他的代碼被修剪過,這個問題使用了這個數組(實際上'param'沒有被使用)。 – Chris 2012-03-07 11:38:19