Wie kann ich eine Art Einschränkung zu enthalten, was serialisierbar eine generische Methode?

Meine generische Methode serialisieren muss das übergebene Objekt jedoch nur darauf, dass es ISerializable implementiert scheint nicht zu funktionieren. Zum Beispiel habe ich ein struct zurückgegeben, die von einem web-service (markiert mit SerializableAttribute), der serialisiert in xml ganz gut, aber, wie erwartet, die C# - compiler beschwert sich.

Gibt es einen Weg wie ich überprüfen kann das Objekt serialisierbar ist, bevor Sie versuchen, es zu serialisieren, oder, noch besser, eine Möglichkeit, die where keyword zu prüfen, das Objekt ist geeignet?

Hier meine komplette Methode:

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);
}

Und 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();
    }
}

Falls dies nicht möglich ist, was ist der beste Weg, um eine überprüfung durchführen, dass ein Objekt serialisierbar ist zur Laufzeit?

Schreibe einen Kommentar