2016-10-27 2 views
0

に割り当てますこんにちは、私はIEnumerableを<をdeseriliazeしよう>私はこのエラーを取得ReadOnlyプロパティ

エラー75施設またはインデクサ「ノードが」に割り当てることができないオブジェクトをシリアル化したいが、 - それが読まれます私のコード例のみ

シリアライズパート。

FileStream fs = new FileStream(sv.FileName, FileMode.Create, FileAccess.ReadWrite); 
BinaryFormatter bin = new BinaryFormatter(); 
bin.Serialize(fs, graphControl.Nodes); 
fs.Close(); 

デシリアライズパート:

FileStream fs = new FileStream(op.FileName, FileMode.Open, FileAccess.ReadWrite); 
BinaryFormatter bin = new BinaryFormatter(); 

//Error Here 

graphControl.Nodes = (IEnumerable<Node>)bin.Deserialize(fs); 

ノードクラスパート:

public List<Node> graphNodes = new List<Node>(); 
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 
public IEnumerable<Node> Nodes { get { return graphNodes; } } 

誰もが私を助けることができますか?

答えて

2

graphNodesは、公開すべきではないが、それはであるから、それを使用する:

graphControl.graphNodes = (IEnumerable<Node>)bin.Deserialize(fs); 

をしかし、それは本当に公共すべきではないので、これは良いです:

graphControl.Nodes.Clear(); 
graphControl.Nodes.AddRange((IEnumerable<Node>)bin.Deserialize(fs)); 

... graphNodesを非公開にします。

1

一度にそれを一つのアイテムを行うにはIEnumerable<Node>あなた可能性が高い必要があるので:

graphControl.Nodes.Clear(); 

var nodes = (IEnumerable<Node>)bin.Deserialize(fs); 

foreach(var node in nodes) { 
    graphControl.Nodes.Add(node); 
} 
関連する問題