2012-03-27 32 views
1

我將存儲類似的數據不同的用途,我只是想他們是基於相同的基類和序列化所有數據,以XML,但是我希望改變的元素名稱時,多個類它序列化。這是用C#編寫的。重寫基類的XMLElement名

我想使用類的名稱,使它更容易閱讀我的代碼,更容易實現。

public BaseMenuItem 
{ 
    public string ItemName; 
    public string ItemDescription 
    public string ItemAssetName; 
    public List<BaseMenuItem> SubMenuItems; 
} 

再有其他項目繼承這一點,並用不同的元素名稱序列化。 我目前有他們不同的類沒有基類,但使用相同的基類會使它更容易實現和更多的可擴展性,所以我在如何實現我定義的變量的重寫元素名稱的損失有點基類。

+0

你在使用什麼串行器? – 2012-03-27 22:59:53

+0

我正在使用System.Xml.Serializer 和XmlSerializer類 – michael 2012-03-27 23:05:38

+0

實際上,基類使代碼緊密耦合且更難以更改。 – 2012-03-27 23:08:47

回答

3

在這種情況下,我會說「基類要求」會使您比您提供的價值更痛苦。

如果你只使用基類來節省一些代碼,即你不希望在子類的額外屬性?如果是這樣,只需放棄並刪除基類。在每個子課程中增加一些額外的代碼的代價是,你將不會有太多的痛苦。

如果您因編程原因需要基類?例如操作是專門針對基類執行的(多態性)。使用接口而不是基類。

無論哪種方式刪除基類。

0

不幸的是,你不能用你正在使用的serialisers做到這一點。這些'默認的'.NET串行器不靈活,速度慢並且通常僅在微不足道的情況下才有用。

您可以嘗試另一個serialiser,或者在類上使用繼承,但不能使用類的屬性。如果你有很多你想改變名字的元素,這可能不是很有幫助。

其實我現在還不確定。當我更確定的時候我會更新,但我也有同樣的問題。