そのため、MSMQ にメッセージを配置できるときは、古いコード ベースは正常に機能していました。しかし、私が受け取った新しいコードベースは機能せず、正直なところ何が欠けているのかわかりません。
基本クラス:
[DataContract]
[KnownType(typeof (ReportA))]
[KnownType(typeof (AUpdate))]
[KnownType(typeof (AStatusReport))]
[KnownType(typeof (MsgHeader))]
[KnownType(typeof(BRegistationReport))]
[KnownType(typeof(BAlarmReport))]
[KnownType(typeof(AlarmData))]
[KnownType(typeof(DmpAlarmData))]
public class MyMessage {....}
次に、ここの特定のクラス、BAlarmReport (MyMessage から派生):
[DataContract]
public class BAlarmReport: MyMessage
{ ... }
次に、DmpAlarmData から継承されたベースとして AlarmData を使用できます。
[DataContract]
public class DmpAlarmData : AlarmData
{ .. }
MSMQ に配置する方法は以前と同じで、新しいコードベースを取得するまで機能していました。
var queue = new MessageQueue(@"FormatName:Direct=OS:" + mMSMQQueueNameAndLocation);
var msg = new Message {Body = MyMessage.CreateMessage() };
using (var ts = new TransactionScope(TransactionScopeOption.Required))
{
queue.Send(msg, MessageQueueTransactionType.Automatic); // send the message
ts.Complete(); // complete the transaction
}
私は何かを逃していますか?