2011-04-03 69 views
1

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

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

我希望找到的东西,我可以有这样的:

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

}

有什么想法?

回答

1

你可以做这样的事情:

public class Appointment 
    { 
     [XmlIgnore()] 
     public Person MyPerson 
     { 
      get; 
      set; 
     } 

     public int MyPersonId 
     { 
      get { return MyPerson.Id; } 
      set { MyPerson = new Person(value)} 
     } 
    } 
+0

谢谢。我认为这是我将要去的。我认为如果可以通过属性来指定它会很酷,这样你就不必制作一个单独的属性 - 就像这种情况下的MyPersonId一样。但它会做到这一点。谢谢 - 我真的很感激它。 – csharpjunkie 2011-04-03 22:37:48

1

你可以有人称实现IXmlSerializable的做它的自定义序列化(反倾销只有ID,如)

也可以实现它为你的约会,而不是,使得选择你想要序列化的比特数是微不足道的。

作为一个混合选项,您可以将这样的自定义序列化器的实现委托给帮助程序结构,您可以构建它以模仿您想要的具体序列化布局。这样,您将不必处理细节和XmlWriter

HTH

+0

谢谢。我有一个自定义序列化程序。仅倾销ID的问题是我需要将其他人的属性在我的解决方案的其他部分中序列化。谢谢回复。 :-) – csharpjunkie 2011-04-03 22:35:39

+0

所以你可以有第二或第三种方法 - 人员通常会完全序列化,但不在约会内?这有帮助吗? – sehe 2011-04-03 22:37:07

+0

是的,它帮助。是的,我可以完全序列化人 - 没有问题。当我序列化我的约会对象时,我只是不想坚持我的整个嵌套Person对象。 – csharpjunkie 2011-04-04 02:47:06

相关问题