在C#中實現MSMQ的序列化和反序列化可以通過使用BinaryFormatter進行序列化和反序列化操作。以下是一個簡單的示例代碼:
using System;
using System.Messaging;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace MSMQSerialization
{
public class MessageObject
{
public string Message { get; set; }
}
class Program
{
static void Main(string[] args)
{
MessageObject messageObj = new MessageObject();
messageObj.Message = "Hello MSMQ!";
// 序列化消息對象
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, messageObj);
// 發送消息到MSMQ隊列
MessageQueue queue = new MessageQueue(@".\Private$\MyQueue");
Message message = new Message();
message.BodyStream = stream;
queue.Send(message);
// 從MSMQ隊列接收消息并反序列化
Message receivedMessage = queue.Receive();
receivedMessage.BodyStream.Position = 0;
MessageObject receivedObj = (MessageObject)formatter.Deserialize(receivedMessage.BodyStream);
Console.WriteLine("Received message: " + receivedObj.Message);
queue.Close();
}
}
}
在這個示例中,我們首先創建了一個MessageObject類來存儲消息內容。然后我們使用BinaryFormatter來序列化MessageObject對象,并將序列化后的數據發送到MSMQ隊列。接著從隊列中接收消息,并通過反序列化操作將消息內容提取出來并打印出來。
請注意,這里的示例只是一個簡單的示例,實際生產環境中可能需要更復雜的消息對象和處理邏輯。