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シリアル化するオブジェクトではなく、バイナリ データまたは文字列のいずれかで構築できます (ただし、自分で文字列にシリアル化し、メッセージとして保存することはできます)。MyObjectそのため、エラーが発生します。パラメーターとしてa を取るコンストラクターはありません。

CloudQueueMessage の作成の詳細については、この msdn ページを参照してください。

于 2012-03-27T18:01:28.887 に答える
0

この質問をチェックしてください。

C# を使用して「厳密に型指定されたキュー」を作成する手法の概要を説明します。ただし、このアプローチは非常に簡単で、Java でも同様の動作を実現できると確信しています。オブジェクトをバイナリ配列にシリアル化できる限り。

これは、必要に応じて役立つ質問です。そしてこれも

于 2012-03-27T20:27:46.337 に答える
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 に答える