1

我有一个CloudQueueMessage并且我想插入“Hello World” - 所以我写:

CloudQueueMessage message = new CloudQueueMessage("Hello World");

这是完美的。

我的问题是我想像这样放置一个对象来代替“Hello World”:

CloudQueueMessage message = new CloudQueueMessage(new MyObject(parameter1, parameter2, ...));

但是编译器不会让我,因为它告诉我:

The constructor CloudQueueMessage (MyObject) is undefined.

我怎样才能达到我想要的?

4

3 回答 3

0

CloudQueueMessage可以用二进制数据或字符串构造,而不是要序列化的对象(尽管您可以自己将其序列化为字符串,然后将其存储为消息)。这就是您收到错误的原因:没有构造函数将 aMyObject作为其参数。

有关创建 CloudQueueMessage 的更多详细信息,请参阅此 msdn 页面

于 2012-03-27T18:01:28.887 回答
0

这是我在处理 Azure 队列时用于将对象序列化为字符串并返回的代码。只需确保您的对象很小,以便它们符合 64k 要求

protected CloudQueueMessage CreateCloudQueueMessage(TQueueableEntity message)
{
    using (var stringWriter = new StringWriter())
    {
        var xmlSerializer = new XmlSerializer(typeof(TQueueableEntity));
        xmlSerializer.Serialize(stringWriter, message);

        return new CloudQueueMessage(stringWriter.ToString());
    }
}

protected TQueueableEntity CreateObjectFromMessage(CloudQueueMessage message)
{
    var xmlSerializer = new XmlSerializer(typeof(TQueueableEntity));

    //Deserialize message
    using (var reader = new StringReader(message.AsString))
    {
        var result = (TQueueableEntity)xmlSerializer.Deserialize(reader);
        reader.Close();
        return result;
    }
}
于 2012-03-28T01:41:27.693 回答
0

你可以看看这个问题

它概述了使用 C# 拥有“强类型队列”的技术。然而,这种方法真的很简单,我相信你可以在 Java 中实现类似的行为。只要您可以将对象序列化为二进制数组。

如果您需要,这个问题可能会对您有所帮助。这也

于 2012-03-27T20:27:46.337 回答