2011-04-03 66 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

相關問題