重複の可能性:
IList<T> をシリアル化する方法は?
私が定義した別のクラスであるタイプS
のプロパティを含むクラス(それを と呼びましょう)をシリアライズしたいと思います。クラスのインスタンスを XMLにシリアル化しようとすると、例外が発生します。はどの具象クラスを使用するかわからないため、これは理解できます。できれば属性を使用して、インスタンスをシリアル化/逆シリアル化するときにインスタンス化する具象クラスを指定する方法はありますか。私のクラスの実装は、クラスのインスタンスを作成します。私の例を説明するためのコードを次に示します。IList<T>
T
S
XmlSerializer
S
List<T>
using System;
using System.Xml.Serialization;
using System.IO;
[Serializable]
public class T { }
[Serializable]
public class S
{
public IList<T> ListOfTs { get; set; }
public S()
{
ListOfTs = new List<T>();
}
}
public class Program
{
public void Main()
{
S s = new S();
s.ListOfTs.Add(new T());
s.ListOfTs.Add(new T());
XmlSerializer serializer = new XmlSerializer(typeof(S));
serializer.Serialize(new StringWriter(), s);
}
}
シリアル化に「シリアル化/逆シリアル化するときListOfTs
のインスタンスを想定する」という定義の上に配置できる属性があることを願っています。List<T>