Мой общий метод должен сериализовать переданный ему объект, однако простое настаивание на том, что он реализует ISerializable, похоже, не работает. Например, у меня есть структура, возвращенная из веб-службы (помеченная атрибутом SerializableAttribute), которая прекрасно сериализуется в xml, но, как и ожидалось, компилятор C# жалуется.
Есть ли способ проверить сериализуемость объекта, прежде чем пытаться его сериализовать, или, что еще лучше, способ использования ключевого слова where
для проверки пригодности объекта?
Вот мой полный метод:
public static void Push<T>(string url, T message)
where T : ISerializable
{
string xml = SerializeMessage(message);
// Send the message to Amazon SQS
SendMessageRequest sendReq = new SendMessageRequest { QueueUrl = url, MessageBody = xml };
AmazonSQSClient client = new AmazonSQSClient(S3User, S3Pass);
client.SendMessage(sendReq);
}
И SerializeMessage:
private static string SerializeMessage<T>(T message)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (StringWriter stringWriter = new StringWriter())
{
xmlSerializer.Serialize(stringWriter, message);
return stringWriter.ToString();
}
}
Если это невозможно, как лучше всего проверить сериализуемость объекта во время выполнения?