序列化器错误
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 对象(无论它是否包含私有字段/属性)
我的自定义 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 对象(无论它是否包含私有字段/属性)