c# - 类型 xxx 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型

标签 c# wcf serialization

因此,当我可以在 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 
{ ... }

然后您可以将 AlarmData 作为继承自 DmpAlarmData 的基础:

[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
}

我错过了什么吗?

最佳答案

已修复。 感叹

通过深入研究内部异常,我发现了一些类没有无参数构造函数的问题。但子类也应使用基类本身的 XmlInclude 属性声明。

关于c# - 类型 xxx 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503773/

相关文章:

c# - 如何在 Azure Functions 中使用 IAsyncCollector 和 System.Text.Json 设置驼峰式大小写?

c# - 在 API 调用上显示等待或微调器

c# - 作为字典键的整数数组

wcf - 将 SSL 证书嵌入到自托管 .NET 服务器应用程序 (WCF/SignalR) : How?

c# - 如何使用 lambda 来创建一个新的 EventHandler?

c++ - boost 序列化 Armadillo 矩阵

c# - 是否有提供按模式(正则表达式)查找的数据结构?

c# - 如何将 .rtf 文件导入到 silverlight 4 richtextbox?

c# - RAISERROR―如何与SqlException区分?

c# - XmlSerializer 的多个 namespace