Я ищу простой способ проверить, является ли объект в С# сериализуемым.
Как мы знаем, вы создаете объект сериализуемым путем реализации интерфейса 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.