は、私は(自明シンプル)は、次の基本クラスがあるとします。継承されたメンバーに属性を適用できますか?
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();
}
}
...トリックを行いません。
シンプルから継承するつもりだと思います。 – Noldorin
これは、単一のxmlファイルに、 との両方の要素を含めることができることを意味しますか? –
Groo
彼らは明らかに派生クラスにシリアライズする必要があります。要素自体の名前は使用されている場所に依存しますが、それは一般的な考えです。 また、私のアプリケーションでは、より一般的には、XMLを書き出すのに使われています。 –