分配给只读属性
本文关键字:只读属性 分配 | 更新日期: 2023-09-27 18:15:20
你好,我想序列化一个对象,但是,如果尝试取消IEnumerable<>我收到这个错误
错误75无法将属性或索引器"Nodes"分配给它--它是只读
我的示例代码:
序列化部件。
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; } }
有人能帮我吗?
graphNodes不应该是公共的,但既然是,就使用它:
graphControl.graphNodes = (IEnumerable<Node>)bin.Deserialize(fs);
但它真的不应该公开,所以这更好:
graphControl.Nodes.Clear();
graphControl.Nodes.AddRange( (IEnumerable<Node>)bin.Deserialize(fs) );
并将CCD_ 1设为私有。
由于您有IEnumerable<Node>
,您可能需要一次只做一项:
graphControl.Nodes.Clear();
var nodes = (IEnumerable<Node>)bin.Deserialize(fs);
foreach(var node in nodes) {
graphControl.Nodes.Add(node);
}