Я ищу простой способ проверить, сериализуем ли объект в 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.