9

BrokeredMessage.PropertiesAzure Service Bus に送信する前に、カスタム プロパティをコレクションに追加しようとしています。カスタム プロパティ タイプは列挙型です。

[Serializable, DataContract]
public enum FooBar
{
    [EnumMember]
    Foo = 0,
    [EnumMember]
    Bar = 1
}

また、属性の多数の組み合わせと、属性のないバージョンも試しました。

これは、プロパティを追加してメッセージを送信するコードです。

var brokeredMessage = new BrokeredMessage(new MessageObject(){ //etc });
brokeredMessage.Properties.Add("FooBar", FooBar.Foo);
queueClient.Send(brokeredMessage);

メッセージを送信しようとすると、次のエラーが返されます。

System.Runtime.Serialization.SerializationException : Serialization operation failed due to unsupported type Namespace.FooBar.

BrokeredMessage.Properties制限 (ある場合)に関するより詳細なドキュメントを追跡しようとしましたが、プリミティブ型のみを使用できることを指定するものは何も見つかりません。

なぜこれが機能しないのかについてのアイデアはありますか?

編集:

Microsoft.ServiceBus の V2.1.0.0 を使用していると言うべきでした。

4

1 に答える 1

11

まもなく、文字列や整数などの単純な型のみを使用できるようになります。

あなたの場合、2つの方法を試すことができます

  1. brokeredMessage.Properties.Add("FooBar", (int)FooBar.Foo);
  2. BrokeredMessage.Properties.Add("FooBar", FooBar.Foo.ToString());

どちらが良いかは、ご自身でお選びください。

于 2013-05-31T16:13:54.270 に答える