Saya mencari cara mudah untuk memeriksa apakah suatu objek di C # dapat bersambung.
Seperti yang kita ketahui, Anda membuat objek dapat diserialkan dengan mengimplementasikan antarmuka ISerializable atau dengan menempatkan [Serializable] di bagian atas kelas.
Apa yang saya cari adalah cara cepat untuk memeriksa ini tanpa harus mencerminkan kelas untuk mendapatkan atributnya. Antarmuka akan cepat menggunakan pernyataan is .
Menggunakan saran @ Flard, ini adalah kode yang saya buat, berteriak apakah ada cara yang lebih baik.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Atau bahkan lebih baik hanya mendapatkan tipe objek dan kemudian menggunakan properti IsSerializable pada tipe:
typeof(T).IsSerializable
Ingat meskipun ini tampaknya hanya kelas yang kita hadapi jika kelas tersebut berisi kelas lain, Anda mungkin ingin memeriksa semuanya atau mencoba dan membuat serial dan menunggu kesalahan seperti yang ditunjukkan @pb.