我有以下属性的自定义类:
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 的更改会导致错误。你知道吗?或者我需要公开并牢记我无法设置它?
谢谢你, 迈克尔
答案 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对象(无论它是否包含私有字段/属性)