C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: observablecollectionをシリアライズ


(過去ログ 106 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■63486 / inTopicNo.1)  observablecollectionをシリアライズ
  
□投稿者/ 素人 (1回)-(2012/08/31(Fri) 19:05:50)

分類:[.NET 全般] 

ObservablecollectionをDataContractSerializerでシリアライズする際の引数がよくわかりません。
Observablecollectionは別のクラスのプロパティとして存在しています。
また、このObsservablecollectionの型は、独自のクラス(仮にItemとします)です。

シリアライズする時のコードは
DataContractSerializer test = new DataContractSerializer(なんらかの引数が2つ);
というようなものになりますよね?
この時の2つの引数に何を指定すればいいのかよくわかりません。

よろしくお願いします。

引用返信 編集キー/
■63520 / inTopicNo.2)  Re[1]: observablecollectionをシリアライズ
□投稿者/ 魔界の仮面弁士 (49回)-(2012/09/04(Tue) 11:36:27)
No63486 (素人 さん) に返信
> Observablecollectionは別のクラスのプロパティとして存在しています。

「別のクラス」をシリアライズしたいのではなく、シリアライズ対象は
「別のクラスのプロパティ」にある ObservableCollection<T> なのですね?


とりあえず、こういった感じで如何でしょうか。

using System;
using System.IO;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;

class Program
{
    static void Main()
    {
        var propertyValue = new ObservableCollection<Item>();
        propertyValue.Add(new Item() { Id = 1 });
        propertyValue.Add(new Item() { Id = 2 });
        propertyValue.Add(new Item() { Id = 3 });

        var test = new DataContractSerializer(typeof(ObservableCollection<Item>));

        ObservableCollection<Item> result;
        using(var stm = new MemoryStream())
        {
            test.WriteObject(stm, propertyValue);
            stm.Position = 0;
            result = (ObservableCollection<Item>)test.ReadObject(stm);
        }

        foreach (var item in result)
        {
            Console.WriteLine(item.Id);
        }
    }
}

public class Item { public int Id { get; set; } }

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -