|
■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; } }
|