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

Gar*_*yJL 9 .net c# serialization azure azureservicebus

我试图在将BrokeredMessage.Properties集合属性发送到Azure Service Bus之前将其添加到集合中.自定义属性类型是枚举:

[Serializable, DataContract]
public enum FooBar
{
    [EnumMember]
    Foo = 0,
    [EnumMember]
    Bar = 1
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过各种各样的属性组合,以及没有属性的版本.

这是添加属性并发送消息的代码:

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

尝试发送消息时返回以下错误:

System.Runtime.Serialization.SerializationException : Serialization operation failed due to unsupported type Namespace.FooBar.
Run Code Online (Sandbox Code Playgroud)

我试图找到一些关于BrokeredMessage.Properties限制的详细文档(如果有的话),并且找不到任何指定只能使用基本类型的文档.

关于为什么这不起作用的任何想法?

编辑:

应该说我使用的是Microsoft.ServiceBus的V2.1.0.0.

use*_*170 11

不过,您只能使用字符串,整数等简单类型.

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

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

选择你自己,哪一个更适合你.