串行器错误

时间:2015-03-24 09:48:02

标签: c# serialization private public

我有以下属性的自定义类:

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

我在序列化程序上遇到错误,因为&#34;对象具有 Leader 属性,没有公共设置。&#34;但是我需要将其保密,因为 Leader 的更改会导致错误。你知道吗?或者我需要公开并牢记我无法设置它?

谢谢你, 迈克尔

1 个答案:

答案 0 :(得分:1)

所以,如上所述,你可以这样做,它只能设置一次,但我不认为它是一个好的选择(也许你应该重新考虑你想要的方式存储此信息?)

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

这将允许您保存/加载值,并且它不允许在之后设置它。但是,这只是解决问题。

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