Ich suche nach einer einfachen Möglichkeit, um zu überprüfen, ob ein Objekt in C # serialisierbar ist.
Wie wir wissen, machen Sie ein Objekt serialisierbar, indem Sie entweder die ISerializable- Schnittstelle implementieren oder [Serializable] an die Spitze der Klasse setzen.
Was ich suche, ist eine schnelle Möglichkeit, dies zu überprüfen, ohne die Klasse widerspiegeln zu müssen, um ihre Attribute zu erhalten. Die Schnittstelle wäre schnell mit einer is- Anweisung.
Mit @ Flards Vorschlag ist dies der Code, den ich mir ausgedacht habe. Schrei, es gibt einen besseren Weg.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Oder noch besser, holen Sie sich einfach den Typ des Objekts und verwenden Sie dann die IsSerializable-Eigenschaft für den Typ:
typeof(T).IsSerializable
Denken Sie daran, dass dies nur die Klasse zu sein scheint, mit der wir es zu tun haben, wenn die Klasse andere Klassen enthält, die Sie wahrscheinlich alle überprüfen oder versuchen möchten, zu serialisieren und auf Fehler zu warten, wie @pb hervorhob.