序列化器错误

Serializer Error

我的自定义 class 具有以下属性:

Class Person
    readonly public string Name;
    readonly public string FamilyName;
    readonly public string UserName;
    private List<Person> Team = new List<Person>();
    public Person Leader { get; private set; }
    public bool HasTeam { get; private set; }

我在序列化程序上遇到错误,因为 "Object has Leader property that has no public set." 但是我需要将其保密,因为更改 Leader 会导致错误。你知道周围有什么办法吗?或者我需要制作它 public 并记住我无法设置它?

谢谢, 迈克尔

因此,如前所述,您可以这样做,它只能设置一次,但我认为这不是一个好的选择(也许您应该重新考虑您希望如何存储此信息?)

public class Person
{
    private Person leader;
    public Person Leader
    {
        get
        {
            return leader;
        }
        set
        {
            if (Object.Equals(leader, value))
            {
                return;
            }
            if (leader != null)
            {
                throw new InvalidOperationException("Leader can be set only once!");
            }
            leader = value;
        }
    }
}

这将允许您 save/load 值,并且不允许之后设置它。但是,这只是解决问题。

如果您不必专门将其保存到 XML,您可以使用二进制格式化程序,它会保存整个 Person 对象(无论它是否包含私有字段/属性)