不同類的屬性之間的屬性採取以下示例代碼:如何共享
public abstract class ElementBase
{
}
public class ElementOne : ElementBase
{
}
public class ElementTwo : ElementBase
{
[XmlElement("element-one", typeof(ElementOne))]
[XmlElement("element-two", typeof(ElementTwo))]
public ElementBase[] SubElements { get; set; }
}
[XmlRoot("root-element")]
public class RootElement
{
[XmlElement("element-one", typeof(ElementOne))]
[XmlElement("element-two", typeof(ElementTwo))]
public ElementBase[] SubElements { get; set;}
}
上ElementOne.SubElements
和ElementTwo.SubElements
屬性需要保持同步(即,屬性添加到一個需要被添加到其他和參數需要保持不變),原因是在xml中,<element-one>
和元素都可以顯示爲<root-element>
和<element-two>
的子元素。元素可以以任何順序排列,順序很重要。另外,將來可能會有更多的子元素。由於需要爲屬性保留兩個單獨的位置,因此目前編碼的方式會使維護變得繁瑣且容易出錯。
有沒有辦法讓這兩個屬性「共享」這些屬性,這樣一次編輯就會影響到它們兩個呢?我嘗試了以下內容:
public class CommomAttribute : Attribute
{
public XmlElementAttribute f = new XmlElementAttribute("element-one", typeof(ElementOne));
public XmlElementAttribute l = new XmlElementAttribute("element-two", typeof(ElementTwo));
}
然後,我用一個[Command]替換上述類屬性的冗餘屬性。這沒有奏效。
另一個問題:有沒有更好的方法來解決這個問題?
這是一種可能性。我確實可以控制xml格式。不過,如果我不必這樣做,那會很好,因爲它使xml變得有點醜陋。 – josmith42