Windows Azure Service Bus - 带有枚举值的BrokeredMessage.Properties

时间:2013-05-31 13:21:30

标签: c# .net serialization azure azureservicebus

我尝试将自定义属性添加到BrokeredMessage.Properties集合,然后再将其发送到Azure 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。

1 个答案:

答案 0 :(得分:11)

很快,您只能使用字符串,整数等简单类型。

对于您的情况,您可以尝试两种方式

  1. brokeredMessage.Properties.Add(“FooBar”,(int)FooBar.Foo);
  2. brokeredMessage.Properties.Add(“FooBar”,FooBar.Foo.ToString());
  3. 自己选择,哪一个更适合你。