我正在使用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>
它们只是序列化(和反序列化)为对象,没有属性。
(这也是雅虎集团的一个交叉帖子。)
答案 0 :(得分:1)
使用我们的JS客户端,我们使用一组REST样式服务来处理序列化并将消息传递给NSB。我们一直传递可变长度数组。
在一起引用动态结构时,NSB需要专门格式化消息以激活其处理程序。实现自己的序列化程序可能是个好主意。您必须实施NServiceBus.Serialization.IMessageSerializer
。除此之外,您还必须能够告诉NSB使用该序列化程序,并且您可能拥有自己的自定义配置。看看课程ConfigureXmlSerializer
。
我还看到在3.0分支中实现了JSON / BSON序列化器。我从未使用它,但它可能满足您的需求。