У меня есть объект с некоторыми полями, и я использую отражение, чтобы перебрать поля этого объекта. Этот объект получает сериализацию и десериализацию. Я сейчас пишу процедуру десериализации. Я хочу перебрать поля, получить значение из десериализации SerializationInfo. Прежде чем я начал реализовывать Reflection, я делал все вручную:
public SKA_MAP(SerializationInfo info, StreamingContext ctxt)
{
//Get the values from info and assign them to the appropriate properties
DISP_SEGS = (int)info.GetValue("DISP_SEGS", typeof(int));
//other fields followed
}
и сейчас:
public SKA_MAP(SerializationInfo info, StreamingContext ctxt)
{
//Get the values from info and assign them to the appropriate properties
//DISP_SEGS = (int)info.GetValue("DISP_SEGS", typeof(int));
foreach (FieldInfo FI in this.GetType().GetFields())
{
FI.SetValue(this, info.GetValue(FI.Name, FI.GetType()));
}
}
Я получаю
'Неправильное приведение из' System.Int32 'к' System.Reflection.RtFieldInfo '.'
ОК, да, но я положил туда разные приведения "не показано" и ничего.