Мой общий метод должен сериализовать переданный ему объект, однако просто настаивая на том, что он реализует ISerializable, похоже, не работает. Например, у меня есть структура, возвращаемая из веб-службы (помеченная SerializableAttribute), которая сериализуется в xml просто отлично, но, как и ожидалось, компилятор С# жалуется.
Есть ли способ проверить, что объект сериализуется, прежде чем пытаться его сериализовать, или, что еще лучше, использовать ключевое слово 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();
}
}
Если это невозможно, то какой лучший способ выполнить проверку того, что объект сериализуется во время выполнения?