genericsのリストを含むクラスをxmlにシリアル化する方法があるのだろうか?C#:ジェネリックのリストを含むクラスのXMLシリアル化
class Program
{
static void Main(string[] args)
{
var o = new ContainerClass();
o.Values = new List<SomeClass> {new SomeClass<int>(), new SomeClass<long>()};
XmlSerializer xs = new XmlSerializer(typeof(ContainerClass));
MemoryStream buffer = new MemoryStream();
using (TextWriter writer = new StreamWriter(buffer))
{
xs.Serialize(writer, o); // InvalidOperationException here
}
var xml = Encoding.UTF8.GetString(buffer.ToArray());
}
}
public class ContainerClass
{
public List<SomeClass> Values { get; set; }
}
public class SomeClass
{
}
public class SomeClass<T> : SomeClass
{
}
私はシリアライザに余分なタイプを渡す方法があることを知っているが、おそらく表示される可能性今、すべての組み合わせに方法はありません: それはこのようになります。
私はIXmlSerializableをさまざまな方法で成功させることなく実装しようとしました。
どのように対処するのですか?
これを処理できる人がいる場合は、外部ライブラリも開いています。
IXMLSerializableでジェネリック制約を設定するのがうまくいくのだろうかと思います。例えば 'public class SomeClass:SomeClass where T:IXMLSerializable ....'(すべてがシリアライズ可能であることを確認してください) –
違いはありません。しかし、.NET Framework用のもう1つのXMLシリアル化ライブラリがこの仕事をしているように思えます。 – Krzysztof