如何反序列化NServiceBus XML消息?

JDTLH9

我有一个.NET控制台应用程序,正在执行将消息发送到另一台计算机上的总线的操作。使用代码:

Bus.Send(MyMessageClass);

现在,我希望能够使用XML并将消息反序列化回C#对象MyMessageClass。这是为了允许我对消息中设置和发送的属性编写验收测试。我可以将消息放入System.Messaging.Message()对象,然后从此实例的BodyStream中获取XML文档,但是我不能正确地反序列化此消息。

我想使用NServiceBus.Serializers.XML.XmlMessageSerializer()对象(而不是.NET框架的XmlSerializer()对象)来做到这一点吗?

菲尔·桑德勒

我不得不在过去的某一时刻对消息的序列化进行故障排除,因此需要进行旧的单元测试。可能足以让您入门,但是IIRC必须在正在运行的总线的上下文中运行,否则消息类型将不会在串行器中注册(我认为这是在引导总线时发生的)。

    [Test]
    public void TestMyMessage()
    {
        var test = new MyMessage();

        var serializer = new XmlMessageSerializer(new MessageMapper());

        var messages = new object[] {test};

        using (var stream = new MemoryStream())
        {
            serializer.Serialize(messages, stream);
            stream.Position = 0;

            object[] msg = serializer.Deserialize(stream);

            Assert.NotNull(msg[0]);
            Assert.IsTrue(msg[0] is MyMessage);
        }
    }

这可能是值得的戳在NSB单元测试XML序列化围绕这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章