C# Windows Azure服务总线-BrokeredMessage。具有枚举值的属性

C# Windows Azure服务总线-BrokeredMessage。具有枚举值的属性,c#,.net,serialization,azure,azureservicebus,C#,.net,Serialization,Azure,Azureservicebus,在将其发送到Azure服务总线之前,我正在尝试向BrokeredMessage.Properties集合添加自定义属性。自定义属性类型是枚举: [Serializable, DataContract] public enum FooBar { [EnumMember] Foo = 0, [EnumMember] Bar = 1 } 我还尝试了许多属性的组合,以及一个没有属性的版本 这是添加属性并发送消息的代码: var brokeredMessage = new

在将其发送到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.
尝试发送邮件时返回以下错误:

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。

简而言之,您只能使用简单的类型,如字符串、整数

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

  • 添加(“FooBar”,(int)FooBar.Foo)
  • 添加(“FooBar”,FooBar.Foo.ToString())
    你自己选择,哪一个更适合你。

    谢谢你的回答。这一点变得很清楚,尽管似乎缺少关于它的文档(除非有人能告诉我它的方向?),但我总是喜欢将枚举值转换为int而不是字符串,所以我选择了这个选项。