C# 序列化自定义集合时获取异常

C# 序列化自定义集合时获取异常,c#,.net,wpf,serialization,C#,.net,Wpf,Serialization,下面是我试图序列化的类 我在序列化过程中遇到异常,它正在从xml进行反序列化 [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public class Organization { private string _name; public string Name { get { return _name; }

下面是我试图序列化的类

我在序列化过程中遇到异常,它正在从xml进行反序列化

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Organization
{
    private string _name;

    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }

    private HasParentObservableCollection<Employee> _emp;

    [System.Xml.Serialization.XmlElementAttribute("Employee")]
    public HasParentObservableCollection<Employee> Emp
    {
        get
        {
            return _emp;
        }
        set
        {
            _emp = value;
        }
    }

    public Organization(string name, HasParentObservableCollection<Employee> emp)
    {
        Emp = emp;
        Name = name;
    }
}
下面是序列化代码

 Organization org1 = new Organization("org11", new HasParentObservableCollection<Employee>() { new Employee("AA", "AA"), new Employee("AA", "AA") });
 Organization org2 = new Organization("org22", new HasParentObservableCollection<Employee>() { new Employee("BB", "BB"), new Employee("AA", "AA") });
 ObservableCollection<Organization>() Org = new ObservableCollection<Organization>() { org1, org2};


XmlSerializer serializer = new XmlSerializer(typeof(Organization));
StringWriter sw = new StringWriter();
XmlTextWriter tw = new XmlTextWriter(sw);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(tw, Org, ns);
Organization org1=新组织(“org11”,新HasParentObservableCollection(){新员工(“AA”,“AA”),新员工(“AA”,“AA”)};
Organization org2=新组织(“org22”,新HasParentObservableCollection(){新员工(“BB”,“BB”),新员工(“AA”,“AA”)};
ObservableCollection()Org=新的ObservableCollection(){org1,org2};
XmlSerializer serializer=新的XmlSerializer(类型(组织));
StringWriter sw=新的StringWriter();
XmlTextWriter tw=新的XmlTextWriter(sw);
XmlSerializerNamespaces ns=新的XmlSerializerNamespaces();
加上(“,”);
serializer.Serialize(tw、Org、ns);
这里有几个问题:

1) 由
XmlSerializer
序列化的类必须具有公共无参数构造函数:

public class Organization { public Organization() {} ... }
public class Employee { public Employee() {} ... }
2) 您没有序列化为其创建
XmlSerializer
实例的类型

var serializer = new XmlSerializer(typeof(ObservableCollection<Organization>));
var serializer=新的XmlSerializer(typeof(ObservableCollection));

3) 您可以删除
[Serializable]
标记-xml序列化忽略该标记

您使用的是哪个序列化程序?你能包括做序列化的代码块吗?更新的代码。。。
var serializer = new XmlSerializer(typeof(ObservableCollection<Organization>));