Estou procurando uma maneira fácil de verificar se um objeto em C # é serializável.
Como sabemos, você torna um objeto serializável implementando a interface ISerializable ou colocando o [Serializable] no topo da classe.
O que estou procurando é uma maneira rápida de verificar isso sem ter que refletir a classe para obter seus atributos. A interface seria rápida usando uma instrução is .
Usando a sugestão de @ Flard, este é o código que eu criei, grite se existe uma maneira melhor.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Ou melhor ainda, obter o tipo do objeto e usar a propriedade IsSerializable no tipo:
typeof(T).IsSerializable
Lembre-se de que isso parece apenas para a classe com a qual estamos lidando, se a classe contiver outras classes, você provavelmente deseja verificar todas ou tentar serializar e aguardar os erros como @pb apontado.