c# - 序列化对象

标签 c#

我是序列化的新手,我这辈子都想不出如何解决我遇到的这个异常……

我有一个具有以下结构的对象

[XmlRoot("MaxCut2")]
public class MaxCut2File : IFile
{
    public MaxCut2File()
    {
        MyJob = new Job();
        Job.Reference = "MyRef";
    }

    [XmlElement("JobDetails", typeof(Job))]
    public IJob MyJob
    {
        get;
        set;
    }    
}

一个界面...

   public interface IJob
    {        
        string Reference { get; set; }
    }

还有一个类

[Serializable()]
public class Job : IJob
{
    [XmlElement("Reference")]
    public string Reference { get; set; }
}

当我尝试序列化 MaxCut2File 对象的实例时出现错误

{“无法序列化类型为‘MaxCut2BL.Interfaces.IJob’的成员‘MaxCut2File.MaxCut2File.MyJob’,有关详细信息,请参阅内部异常。”} “反射(reflect)类型‘MaxCut2File.MaxCut2File’时出现错误。”

但是,如果我将我的属性 MyJob 从 IJob 类型更改为 Job 类型,它工作正常...

有什么想法吗?

最佳答案

有个小技巧你可以试试:

Serializing an interface

关于c# - 序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749103/

相关文章:

c# - 使用 BasicHttpBinding 检索和更新数据的最快方法

c# - 从 SQL View 中选择要在文本框中显示的特定值

c# - 如何将 LINQ 与具有并行数组的类一起使用?

c# - 在 Azure 辅助角色中使用 Lucene.NET 引发未处理的异常

c# - 带有嵌套命名空间的编译器错误 "cannot resolve symbol"

c# - 如何从 C# 代码调用 Azure 数据工厂管道?

c# - 获取异常详细信息

c# - 错误 130 - 以下方法或属性之间的调用不明确

c# 简单的服务器来接收来自互联网的连接

c# - GridView 中的复选框 "Checked"值始终为 false