Estoy buscando una manera fácil de verificar si un objeto en C # es serializable.
Como sabemos, usted crea un objeto serializable implementando la interfaz ISerializable o colocando [Serializable] en la parte superior de la clase.
Lo que estoy buscando es una forma rápida de verificar esto sin tener que reflejar la clase para obtener sus atributos. La interfaz sería rápida usando una declaración is .
Usando la sugerencia de @ Flard, este es el código que se me ocurrió, grito si hay una manera mejor.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
O incluso mejor, simplemente obtenga el tipo de objeto y luego use la propiedad IsSerializable en el tipo:
typeof(T).IsSerializable
Sin embargo, recuerde que esto parece ser solo la clase con la que estamos tratando si la clase contiene otras clases, probablemente desee verificarlas todas o intente serializar y esperar errores como señaló @pb.