Je cherche un moyen simple de vérifier si un objet en C# est sérialisable.
Comme nous le savons, vous rendez un objet sérialisable soit en implémentant la fonction ISerializable ou en plaçant l'interface [Serializable] au premier rang de la classe.
Ce que je cherche, c'est un moyen rapide de vérifier cela sans avoir à refléter la classe pour obtenir ses attributs. L'interface serait rapide et utiliserait un est déclaration.
En utilisant la suggestion de @Flard c'est le code que j'ai trouvé, criez si il y a une meilleure façon.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Ou encore mieux, obtenez simplement le type de l'objet, puis utilisez la propriété IsSerializable sur le type :
typeof(T).IsSerializable
Rappelez-vous cependant que cela semble ne concerner que la classe avec laquelle nous travaillons ; si la classe contient d'autres classes, vous voudrez probablement les vérifier toutes ou essayer de sérialiser et attendre les erreurs comme @pb l'a souligné.