在NServiceBus消息上列出<dynamic> </dynamic>

时间:2012-01-10 14:20:31

标签: nservicebus

我正在使用NServiceBus为应用程序的后端供电 JavaScript客户端。因此,我们有很多情况下我们的命令 真的想要动态列表(JS中的对象数组,C#中的List)。 e.g:

JSON:

{
    "listProperty" : [
        {
            "propertyA" : "value",
            "propertyB" : "valueB"
        },
        {
            "propertyQ" : "valueQ"
        }
    ]
}

C#:

class TheCommand : IMessage {
    public List<dynamic> ListProperty {get; set;}
}

有没有办法用NServiceBus做到这一点?

-----实验结果-----

NServiceBus的XML Serializer的一些实验表明了这一点 它不了解动态:

<TheCommand>
<ListProperty>
<Object>
</Object>
</ListProperty>
</TheCommand>

它们只是序列化(和反序列化)为对象,没有属性。

(这也是雅虎集团的一个交叉帖子。)

1 个答案:

答案 0 :(得分:1)

使用我们的JS客户端,我们使用一组REST样式服务来处理序列化并将消息传递给NSB。我们一直传递可变长度数组。

在一起引用动态结构时,NSB需要专门格式化消息以激活其处理程序。实现自己的序列化程序可能是个好主意。您必须实施NServiceBus.Serialization.IMessageSerializer。除此之外,您还必须能够告诉NSB使用该序列化程序,并且您可能拥有自己的自定义配置。看看课程ConfigureXmlSerializer

我还看到在3.0分支中实现了JSON / BSON序列化器。我从未使用它,但它可能满足您的需求。