Error que se produce cuando se deserializan fuentes que tienen un número decimal (por ejemplo. 8.25) como tamaño (size), en lugar de un numero entero (como tiene que ser)
He tenido un problema que me ha costado dos días encontrarlo, y al final resulta que es una parida
La historia empieza cuado he escrito una clase que se serializaba en formato SOAP y en la que uno de sus campos era el valor de una fuente (concretamente la fuente en uso en un control determinado).
Al serializar la clase, no había ningún problema, todo iba fenomenalmente, pero al deserializar la clase, me daba un error del tipo
System.Reflection.TargetInvocationException
Y al investigarlo me decía que el valor '8.25' o era un valor valido para 'size'
Después de volverme loco, he descubierto que el problema esta en el campo que contiene la fuente. La fuente se 'clona' del valor de la fuente de un control, que tiene el valor de
Name: 'Microsoft Sans Serif'
Size '8.25'
etc. etc.
Todo el problema esta en que ese valor 8.25, no se admite como valido al deserializar la fuente.
Para solucionar el problema he escrito unas pocas líneas de código y con eso se resuelve de forma satisfactoria
'------------------------------------------------------------ ' Antes de serializar asegurarme de que el tamaño de la Fuente ' no tiene decimales porque da error al deserializar Dim tamaño As System.UInt32 = 0 ' Entero corto positivo tamaño = CUInt (Me .ZFont.Size) ' Quitar los decimales If Me .ZFont.Size <> tamaño Then Me .ZFont = New Font(ZFont.FontFamily, tamaño, ZFont.Style, ZFont.Unit) End If tamaño = Nothing '------------------------------------------------------------
© 1.997- 2.008 - La Güeb de Joaquín | |||||
Joaquin Medina Serrano
|
|||||
|