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