私はList<int>
から継承し、余分な情報を提供するフィールドを持つクラス(下記参照)をシリアル化しようとしています。DataContractSerializerは、コレクションのサブクラスのフィールドを無視します
元々、私はXmlSerializer
を使用していましたが、そこにも問題がありました。
はthis postによれば、フィールドをシリアライズしませんが、DataContractSerializer
が動作するはずXmlSerializer
との設計によるものです。
ご意見をいただければ幸いです!
[CollectionDataContract]
public class Group : List<int>
{
[DataMember]
public string Key { get; set; }
}
static void Main()
{
Group test = new Group { Key = "Test key" };
test.Add(60);
DataContractSerializer serializer = new DataContractSerializer(typeof(Group));
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, test);
stream.Position = 0;
test = serializer.ReadObject(stream) as Group;
Console.WriteLine("{0}: {1}", test.Key ?? "No luck", test[0]);
}
おかげで、 ノア
は、残念ながら、私はこの方法でオブジェクトを公開するために必要なすべてのオブジェクトやプロパティが含まれますDTOを作成する必要があります。私は必要なインターフェイスを提供するためにラッパーを実装しなければならないと思うので、シリアライゼーションの一部はあなたが言及したようなものにオブジェクトを回す必要があります。ありがとう! – noah