2013-05-31 6 views
8

コレクションにカスタムプロパティを追加しようとしていますが、Azureサービスバスに送信しています。カスタムプロパティタイプは列挙型です:Windows Azureサービスバス - Enum値を持つBrokeredMessage.Properties

[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を使用していますと述べている必要があります。

答えて

10

まもなく、文字列、整数などの単純な型だけを使用できます。あなたのケースでは

、次の2つの方法

  1. brokeredMessage.Properties.Add( "FooBarの"、(int型)FooBar.Foo)を試すことができます。
  2. brokeredMessage.Properties.Add( "FooBar"、FooBar.Foo.ToString());

どちらをお選びください

+0

あなたの答えをありがとう。これは明白になりましたが、それについての文書がないようです(誰かが私の指向で私を指摘しない限り)。私は常にenum値を文字列ではなくintに変換するほうが好きです。 – GaryJL