2013-05-31 73 views
8

我試圖在將它發送到Azure服務總線之前將自定義屬性添加到BrokeredMessage.Properties集合。自定義屬性類型是一個枚舉:Windows Azure服務總線 - 具有枚舉值的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

不久,您只能使用簡單的類型,如字符串,整數。

對於你的情況,你可以嘗試兩種方法

  1. brokeredMessage.Properties.Add( 「FooBar的」,(INT)FooBar.Foo);
  2. brokeredMessage.Properties.Add(「FooBar」,FooBar.Foo.ToString());

由您自己選擇,哪一個更適合您。

+0

感謝您的回答。這變得很清楚,雖然似乎缺乏關於它的文檔(除非有人能指出我的方向?)我總是更喜歡將枚舉值轉換爲int而不是字符串 - 所以這是我選擇的選項。 – GaryJL