c# - Windows Azure 服务总线 - 具有枚举值的 BrokeredMessage.Properties

标签 c# .net serialization azure azureservicebus

我尝试将自定义属性添加到 BrokeredMessage.Properties 集合,然后再将其发送到 Azure 服务总线。自定义属性类型是枚举:

[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. brokeredMessage.Properties.Add("FooBar", (int)FooBar.Foo);
  2. brokeredMessage.Properties.Add("FooBar", FooBar.Foo.ToString());

您自己选择,哪个更适合您。

关于c# - Windows Azure 服务总线 - 具有枚举值的 BrokeredMessage.Properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858322/

相关文章:

memory-management - Zend_Cache 反序列化 - 内存占用?

c# - 在类库中包含 View

c# - 在 visual studio 10 中创 build 置

c# - 如何模拟 Entity Framework 导航属性智能?

c# - 自定义多线程循环

c# - .NET 核心 Entity Framework - 转义 "@"字符

c# - 如何使用特定的 Url 地址初始化 wcf 客户端?

java - 反序列化问题

c# - POCO 的静态 INotifyPropertyChanged 生成器

java - 最终 transient 字段的序列化/反序列化