Szukam łatwego sposobu sprawdzenia, czy obiekt w C # jest możliwy do serializacji.
Jak wiemy, obiekt nadaje się do serializacji poprzez implementację interfejsu ISerializable lub umieszczenie [Serializable] na szczycie klasy.
To, czego szukam, to szybki sposób sprawdzenia tego bez konieczności odzwierciedlania klasy, aby uzyskać jej atrybuty. Interfejs byłby szybki przy użyciu instrukcji is .
Korzystając z sugestii @ Flarda, oto kod, który wymyśliłem, krzyk, czy jest lepszy sposób.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Lub jeszcze lepiej po prostu pobierz typ obiektu, a następnie użyj właściwości IsSerializable na typie:
typeof(T).IsSerializable
Pamiętaj jednak, że wydaje się, że jest to tylko klasa, z którą mamy do czynienia, jeśli klasa zawiera inne klasy, prawdopodobnie chcesz je wszystkie sprawdzić lub spróbować serializować i poczekać na błędy, jak wskazał @pb.