我有一个c#对象Person作为另一个对象Appointment内的属性。我的Person对象具有属性ID,FirstName,LastName。我目前正在将约会序列化为XML,但是当涉及到嵌套的Person对象时,我只想要ID来序列化。有没有办法从Appointment类中指定它?
我根本无法进入Person并将FirstName和LastName标记为不可序列化的字段,因为我需要在我的解决方案中序列化其他实例中的人员。
我希望能找到一些我可以拥有的东西:
public class Appointment {
[SerializeProperty("ID")]
public Person MyPerson {
get;
set;
}
}
有什么想法?
答案 0 :(得分:1)
您可以这样做:
public class Appointment
{
[XmlIgnore()]
public Person MyPerson
{
get;
set;
}
public int MyPersonId
{
get { return MyPerson.Id; }
set { MyPerson = new Person(value)}
}
}
答案 1 :(得分:1)
您可以让Person实现IXmlSerializable来执行自定义序列化(仅转储ID,例如。)
或者您可以为您的约会实现它,使得精确选择您想要序列化的位变得微不足道。
作为混合选项,您可以将此类自定义序列化程序的实现委派给辅助结构,您可以构造它以模仿您想要的确切序列化布局。这样,您就不必处理细节和XmlWriter
HTH