Мой универсальный метод должен сериализовать переданный ему объект, однако просто настаивать на том, что он реализует 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();
}
}
Если это невозможно, каков наилучший способ проверки сериализации объекта во время выполнения?