C # 'da bir nesnenin serileştirilebilir olup olmadığını kontrol etmenin kolay bir yolunu arıyorum.
Bildiğimiz gibi, ISerializable arabirimini uygulayarak veya [Serializable] 'ı sınıfın en üstüne yerleştirerek bir nesneyi serileştirilebilir hale getirirsiniz .
Aradığım şey, niteliklerini elde etmek için sınıfı yansıtmak zorunda kalmadan bunu kontrol etmenin hızlı bir yolu. Arayüz, is deyimi kullanarak hızlı olacaktır .
@ Flard'ın önerisini kullanarak bulduğum kod bu, çığlık daha iyi bir yol var mı?
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Veya daha da iyisi, sadece nesnenin türünü alın ve ardından tür üzerinde IsSerializable özelliğini kullanın:
typeof(T).IsSerializable
Unutmayın, bunun sadece uğraştığımız sınıf gibi göründüğünü unutmayın, eğer sınıf muhtemelen hepsini kontrol etmek veya denemek ve serileştirmek ve @pb'nin işaret ettiği gibi hataları beklemek isteyeceğiniz diğer sınıfları içeriyorsa.