C#Serialize嵌套对象的特定属性

时间:2011-04-03 20:46:33

标签: c# serialization object

我有一个c#对象Person作为另一个对象Appointment内的属性。我的Person对象具有属性ID,FirstName,LastName。我目前正在将约会序列化为XML,但是当涉及到嵌套的Person对象时,我只想要ID来序列化。有没有办法从Appointment类中指定它?

我根本无法进入Person并将FirstName和LastName标记为不可序列化的字段,因为我需要在我的解决方案中序列化其他实例中的人员。

我希望能找到一些我可以拥有的东西:

public class Appointment {
     [SerializeProperty("ID")]
     public Person MyPerson {
          get;
          set;
     }

}

有什么想法?

2 个答案:

答案 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