相关疑难解决方法(0)

如何添加类型约束以包含可在通用方法中序列化的任何内容?

我的泛型方法需要序列化传递给它的对象,但只是坚持它实现ISerializable似乎不起作用.例如,我有一个从Web服务(标记为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);
}
Run Code Online (Sandbox Code Playgroud)

和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();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这不可能,那么在运行时检查对象是否可序列化的最佳方法是什么?

c# generics attributes serializable

43
推荐指数
2
解决办法
1万
查看次数

标签 统计

attributes ×1

c# ×1

generics ×1

serializable ×1