Estoy buscando una manera fácil de verificar si un objeto en C# es serializable.Cómo comprobar si un objeto es serializable en C#
Como sabemos a tomar un objeto serializable ya sea por aplicación de la interfaz deISerializable o colocando el [Serializable] en la parte superior de la clase.
Lo que estoy buscando es una manera rápida de comprobar esto sin tener que reflejar la clase para obtener sus atributos. La interfaz sería rápida usando una declaración es.
Usando la sugerencia de @ Flard, este es el código que he ideado, gritar es que hay una mejor manera.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
O mejor aún acaba de obtener el tipo de objeto y luego utilizar la propiedad IsSerializable del tipo:
typeof(T).IsSerializable
recordar, sin embargo esto parece que esto sólo acaba la clase que nos ocupa, si la clase contiene otras clases. Probablemente quiera verificarlas todas o intentar serializar y esperar errores como lo señaló @pb.
sentimos que falla cuando un campo en obj no es serializable, ver mi muestra . –
Creo que este es un enfoque mucho mejor: http://stackoverflow.com/questions/236599/how-to-unit-test-if-my-object-is-really-serializable/236698#236698 – xero
La declaración "usted hacer un objeto serializable implementando la interfaz ISerializable o colocando el [Serializable] en la parte superior de la clase "es falso. Para que un objeto sea serializable, su clase debe declarar SerializableAttribute. La implementación de ISerializable solo le brinda más control sobre el proceso. – Mishax