public static object ReadConvertValue(object obj, string propertyValue, BinaryReader binaryReader)
 {
     if (binaryReader == null)
     {
         if (obj is string)
         {
             return(propertyValue);
         }
         if (obj is byte)
         {
             if (!string.IsNullOrEmpty(propertyValue))
             {
                 return((byte)propertyValue[0]);
             }
             return((byte)0);
         }
         if (obj is bool)
         {
             return(bool.Parse(propertyValue));
         }
         if (obj is long)
         {
             return(long.Parse(propertyValue, CultureInfo.InvariantCulture));
         }
         if (obj is int)
         {
             return(int.Parse(propertyValue, CultureInfo.InvariantCulture));
         }
         if (obj is float)
         {
             return(float.Parse(propertyValue, CultureInfo.InvariantCulture));
         }
         if (obj is double)
         {
             if (string.Compare(propertyValue, "Auto", StringComparison.OrdinalIgnoreCase) == 0)
             {
                 return(double.NaN);
             }
             return(double.Parse(propertyValue, CultureInfo.InvariantCulture));
         }
         if (obj is Font)
         {
             return((Font)SerializerBase.fontConverter.ConvertFromString(null, CultureInfo.InvariantCulture, propertyValue));
         }
         if (obj is CultureInfo)
         {
             return(CultureInfo.GetCultureInfoByIetfLanguageTag(propertyValue));
         }
         if (obj is Cursor)
         {
             return((Cursor)SerializerBase.cursorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, propertyValue));
         }
         if (obj is Color)
         {
             return((Color)SerializerBase.colorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, propertyValue));
         }
         if (obj is Enum)
         {
             return(Enum.Parse(obj.GetType(), propertyValue));
         }
         if (obj is Image)
         {
             return(SerializerBase.ImageFromString(propertyValue));
         }
         if (obj is ShapeData)
         {
             return(ShapeData.ShapeDataFromString(propertyValue));
         }
         if (obj is Stream)
         {
             return(SerializerBase.StreamFromString(propertyValue));
         }
         if (obj is double[])
         {
             string[] array  = propertyValue.Split(',');
             double[] array2 = new double[array.Length];
             for (int i = 0; i < array.Length; i++)
             {
                 array2[i] = double.Parse(array[i], CultureInfo.InvariantCulture);
             }
             return(array2);
         }
         if (obj is Size)
         {
             return((Size)SerializerBase.sizeConverter.ConvertFromString(null, CultureInfo.InvariantCulture, propertyValue));
         }
         if (obj is DateTime)
         {
             return(XmlConvert.ToDateTime(propertyValue));
         }
         if (obj is Margins)
         {
             return(Margins.Parse(propertyValue));
         }
         if (obj is MapCoordinate)
         {
             return(MapCoordinate.Parse(propertyValue));
         }
         if (obj is Type)
         {
             return(Type.GetType(propertyValue));
         }
         throw new InvalidOperationException("Serializer do not support objects of type \"" + obj.GetType().ToString() + "\"");
     }
     if (obj is bool)
     {
         return(binaryReader.ReadBoolean());
     }
     if (obj is double)
     {
         return(binaryReader.ReadDouble());
     }
     if (obj is string)
     {
         return(binaryReader.ReadString());
     }
     if (obj is int)
     {
         return(binaryReader.ReadInt32());
     }
     if (obj is long)
     {
         return(binaryReader.ReadInt64());
     }
     if (obj is float)
     {
         return(binaryReader.ReadSingle());
     }
     if (obj is Enum)
     {
         return(Enum.Parse(obj.GetType(), binaryReader.ReadString()));
     }
     if (obj is byte)
     {
         return(binaryReader.ReadByte());
     }
     if (obj is Font)
     {
         return(SerializerBase.fontConverter.ConvertFromString(null, CultureInfo.InvariantCulture, binaryReader.ReadString()));
     }
     if (obj is CultureInfo)
     {
         return(CultureInfo.GetCultureInfoByIetfLanguageTag(binaryReader.ReadString()));
     }
     if (obj is Cursor)
     {
         return(SerializerBase.cursorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, binaryReader.ReadString()));
     }
     if (obj is Color)
     {
         return(Color.FromArgb(binaryReader.ReadInt32()));
     }
     if (obj is DateTime)
     {
         return(DateTime.FromOADate(binaryReader.ReadDouble()));
     }
     if (obj is Margins)
     {
         return(new Margins(binaryReader.ReadInt32(), binaryReader.ReadInt32(), binaryReader.ReadInt32(), binaryReader.ReadInt32()));
     }
     if (obj is MapCoordinate)
     {
         return(new MapCoordinate(binaryReader.ReadDouble()));
     }
     if (obj is Type)
     {
         return(Type.GetType(binaryReader.ReadString()));
     }
     if (obj is Size)
     {
         return(new Size(binaryReader.ReadInt32(), binaryReader.ReadInt32()));
     }
     if (obj is double[])
     {
         double[] array3 = new double[binaryReader.ReadInt32()];
         for (int j = 0; j < array3.Length; j++)
         {
             array3[j] = binaryReader.ReadDouble();
         }
         return(array3);
     }
     if (obj is Image)
     {
         int          num          = binaryReader.ReadInt32();
         MemoryStream memoryStream = new MemoryStream(num + 10);
         memoryStream.Write(binaryReader.ReadBytes(num), 0, num);
         return(new Bitmap(Image.FromStream(memoryStream)));
     }
     throw new InvalidOperationException("Serializer do not support objects of type \"" + obj.GetType().ToString() + "\"");
 }
        private bool SetPropertyValue(object obj, PropertyInfo pi, BinaryReader reader)
        {
            object obj2;

            if (pi != null)
            {
                obj2 = null;
                if (pi.PropertyType == typeof(bool))
                {
                    obj2 = reader.ReadBoolean();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(double))
                {
                    obj2 = reader.ReadDouble();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(string))
                {
                    obj2 = reader.ReadString();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(int))
                {
                    obj2 = reader.ReadInt32();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(long))
                {
                    obj2 = reader.ReadInt64();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(float))
                {
                    obj2 = reader.ReadSingle();
                    goto IL_0351;
                }
                if (pi.PropertyType.IsEnum)
                {
                    obj2 = Enum.Parse(pi.PropertyType, reader.ReadString());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Font))
                {
                    obj2 = SerializerBase.fontConverter.ConvertFromString(null, CultureInfo.InvariantCulture, reader.ReadString());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(CultureInfo))
                {
                    obj2 = CultureInfo.GetCultureInfoByIetfLanguageTag(reader.ReadString());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Cursor))
                {
                    obj2 = SerializerBase.cursorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, reader.ReadString());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Color))
                {
                    obj2 = Color.FromArgb(reader.ReadInt32());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(DateTime))
                {
                    obj2 = DateTime.FromOADate(reader.ReadDouble());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Margins))
                {
                    obj2 = new Margins(reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(MapCoordinate))
                {
                    obj2 = new MapCoordinate(reader.ReadDouble());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Type))
                {
                    obj2 = Type.GetType(reader.ReadString());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Size))
                {
                    obj2 = new Size(reader.ReadInt32(), reader.ReadInt32());
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(double[]))
                {
                    double[] array = new double[reader.ReadInt32()];
                    for (int i = 0; i < array.Length; i++)
                    {
                        array[i] = reader.ReadDouble();
                    }
                    obj2 = array;
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Image))
                {
                    int          num          = reader.ReadInt32();
                    MemoryStream memoryStream = new MemoryStream(num + 10);
                    memoryStream.Write(reader.ReadBytes(num), 0, num);
                    obj2 = new Bitmap(Image.FromStream(memoryStream));
                    memoryStream.Close();
                    goto IL_0351;
                }
                if (pi.PropertyType == typeof(Stream))
                {
                    int          num2          = reader.ReadInt32();
                    MemoryStream memoryStream2 = new MemoryStream(num2);
                    memoryStream2.Write(reader.ReadBytes(num2), 0, num2);
                    obj2 = memoryStream2;
                    goto IL_0351;
                }
                throw new InvalidOperationException("Binary serializer do not support objects of type \"" + obj.GetType().ToString() + "\"");
            }
            goto IL_036b;
IL_0351:
            if (base.IsSerializableContent(pi.Name, obj))
            {
                pi.SetValue(obj, obj2, null);
                return(true);
            }
            goto IL_036b;
IL_036b:
            return(false);
        }