Я новичок, когда дело доходит до размышлений, и на данный момент все это кажется довольно запутанным, так что простите меня, если некоторые из ваших ответов кажутся запутавшими меня немного больше !!!C# Ошибка отражения
В настоящее время я пытаюсь написать небольшой скрипт, который будет клонировать данные, хранящиеся в одной таблице данных, на основе значения, а затем повторно вставлять указанные данные в одну и ту же таблицу, хотя и с измененным идентификатором. В настоящее время я пытаюсь использовать рефлексию, поскольку мне нужно сделать это для нескольких таблиц и не хочу кодировать избыточное количество предложений для бесчисленного количества таблиц.
Кодекса я написал до сих пор для метода отражения заключается в следующем:
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, используемыми для идентификации ссылок внутри данных. Важно, чтобы я сохранил эти неповрежденные для обработки позже строки.
Может ли кто-нибудь указать мне в правильном направлении пути решения этой проблемы ????
Большое спасибо
Работал отлично, большое спасибо! – Callum
@Callum: просто чтобы помочь с вашими навыками отладки, как только эта ошибка возникла, вы должны были проверить линию, на которую она указывала, и затем подумали, что это за типы. 'value' является единственным объектом такого типа' object [] ', поэтому вы можете сказать, что это был ваш преступник, и с этого момента вы, вероятно, заметили бы свою ошибку. В этом случае 'value' не обязательно должен быть массивом' object', хотя я бы предпочел, чтобы у вас был другой код, который вы обрезали для этого вопроса, который использует массив (и даже 'param', который не используется). – Chris