Sto cercando un modo semplice per verificare se un oggetto in C # è serializzabile.
Come sappiamo, si rende serializzabile un oggetto implementando l' interfaccia ISerializable o posizionando [Serializable] all'inizio della classe.
Quello che sto cercando è un modo rapido per verificarlo senza dover riflettere la classe per ottenere i suoi attributi. L'interfaccia sarebbe rapida utilizzando un'istruzione is .
Usando il suggerimento di @ Flard questo è il codice che ho escogitato, urla se c'è un modo migliore.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
O ancora meglio basta ottenere il tipo di oggetto e quindi utilizzare la proprietà IsSerializable sul tipo:
typeof(T).IsSerializable
Ricorda però che questo sembra solo per la classe con cui abbiamo a che fare se la classe contiene altre classi, probabilmente vorrai controllarle tutte o provare a serializzare e attendere gli errori come ha sottolineato @pb.