Я шукаю простий спосіб перевірити, чи об'єкт у C # можна серіалізувати.
Як ми знаємо, ви робите об’єкт серіалізованим, реалізуючи інтерфейс ISerializable або розміщуючи [Serializable] у верхній частині класу.
Я шукаю швидкий спосіб перевірити це без необхідності відображати клас, щоб отримати його атрибути. Інтерфейс був би швидким, використовуючи оператор is .
Використовуючи пропозицію @ Flard, це код, який я придумав, крик, чи є кращий спосіб.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Або ще краще просто отримати тип об'єкта, а потім використовувати властивість IsSerializable для типу:
typeof(T).IsSerializable
Пам'ятайте, хоча це здається лише для класу, з яким ми маємо справу, якщо клас містить інші класи, ви, ймовірно, хочете перевірити їх усі або спробувати серіалізувати і чекати помилок, як зазначив @pb.