Я пишу пользовательский десериализатор, который десериализует список, десериализуя каждый из отдельных объектов в коллекции и затем собирая его вместе.
В основном мой код выглядит так:
//myField is a FieldInfo that represents the field we want to put the data in
//resultObject is the object we want the data to go into
List<Object> new_objects = new List<Object>();
foreach (String file_name in file_name_list)
{
Object field_object = MyDeserialization(file_name)
new_objects.Add(field_object)
}
myField.SetValue(resultObject, new_objects);
Но это выдает ошибку SetValue, потому что (например) я пытаюсь поместить List (Object) в List (Int32). Обратите внимание, что эта проблема возникает только с коллекциями. Следующий код:
Object new_object = MyDeserialization(file_name)
myField.SetValue(resultObject, new_object)
работает просто отлично при условии, что тип времени выполнения результата MyDeserialization (file_name) фактически совместим с типом myField. В чем здесь проблема, и есть ли способ заставить десериализацию коллекции работать? (Я попытался заменить объявление List (Object) на myField.FieldType, и оно даже не скомпилируется.