我想知道当通过 MS 消息队列接收消息并将消息体转换为实际对象时会发生什么。
System.Messaging.Message msg = queue.Receive();
Order order = (Order)msg.Body;
正文包含一些 XML,但它的类型是对象。那么对象是在强制转换行用 XmlSerializer 序列化还是已经发生了?
或者更一般地说,序列化是否总是在将对象转换为实际类型时发生,还是没有生成额外的代码?
最佳答案
查看 System.Messaging.Message.Body
您可以看到其类型为 Object
的属性。
这意味着 MSMQ 的消息传递框架会为您处理序列化/反序列化。
文档指出任何通过 Body
属性传递的对象都必须是可序列化的:
The Body property can be any serializable object, such as a text string, structure object, class instance, or embedded object.
当您转换为您的对象类型时,肯定不会进行序列化。
关于c# - 将对象转换到实际类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655483/