假設我有以下的(平凡簡單)的基類:我可以將屬性應用於繼承的成員嗎?
public class Simple
{
public string Value { get; set; }
}
我現在要做到以下幾點:
public class PathValue : Simple
{
[XmlAttribute("path")]
public string Value { get; set; }
}
public class ObjectValue : Simple
{
[XmlAttribute("object")]
public string Value { get; set; }
}
但實際上不重新定義屬性。我想將屬性應用於基類的成員。這可能嗎?
真正的問題是,在我的從/到XML的序列化機制(它出色地btw),我發現很多類似的元素,只有屬性的名稱不同(他們不一致,控制格式)。現在我需要爲每個這樣的元素創建一個不同的類,而它們就像100%一樣(除了屬性)。
我不認爲這是可能的,但你可能永遠不知道。
UPDATE:
我想馬克的做法,但無濟於事:
public class Document
{
public PathValue Path;
public ObjectValue Object;
}
class Program
{
static void Main(string[] args)
{
var doc = new Document()
{
Path = new PathValue() { Value = "some path" },
Object = new ObjectValue() { Value = "some object" }
};
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(PathValue), "Value", new XmlAttributes() { XmlAttribute = new XmlAttributeAttribute("path") });
overrides.Add(typeof(ObjectValue), "Value", new XmlAttributes() { XmlAttribute = new XmlAttributeAttribute("object") });
XmlSerializer serializer = new XmlSerializer(typeof(Document), overrides);
serializer.Serialize(Console.Out, doc);
Console.WriteLine();
Console.ReadLine();
}
}
...不會做的伎倆。
我想你的意思是從Simple繼承。 – Noldorin 2009-06-24 11:51:59
這是否意味着一個xml文件可以同時包含 和元素,這些元素應該全部序列化爲具有值屬性的值類? –
Groo
2009-06-24 11:55:02
他們應該序列化到派生類,顯然,元素本身的名稱取決於它的使用位置,但是,這是一般的想法。 另外,在我的應用程序中,它更常用於寫出XML而不是讀入它。 – 2009-06-24 12:05:21