XmlSerializorにいくつかのヒントを追加して、インターフェイスをシリアル化/逆シリアル化できるようにしようとしています。XmlIncludeAttributeをクラスの装飾として追加することはできません。代わりに、シリアル化オーバーライドをXmlSerializorに渡します。
var _xs = new XmlSerializer(typeof(Model.ISession), SerializationOverrides());
このSerializationOverrides()
ように見えます:
private static XmlAttributeOverrides SerializationOverrides()
{
var overrides = new XmlAttributeOverrides();
overrides.Add(typeof(Model.ISession), XmlInclude(typeof(Model.Session)));
return overrides;
}
ここまでは順調ですね。このXmlInclude(...)
メソッドは新しいXmlAttributesオブジェクトを作成しますが、 XmlIncludeAttribute属性を追加する方法がわかりません。
private static XmlAttributes XmlInclude(Type type)
{
var attrs = new XmlAttributes();
attrs....Add(new XmlIncludeAttribute(type)); // Add how?????
return attrs;
}
提案?