我有一个.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] 删除。
我来说两句