Как я могу добавить ограничение типа, чтобы включить все сериализуемые в универсальный метод?

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

Если это невозможно, каков наилучший способ проверки сериализации объекта во время выполнения?

Ответы на вопрос(4)

Ваш ответ на вопрос