一个用哈希表保存属性的简单问题(100)

shuiwenyu 2009-04-18 12:05:05
我现在要画流程图,流程图中的每个节点都有很多属性,最后在流程图画好之后我要把这些结点的属性全部保存生成xml文件,现在的问题在我设置第一个结点的属性后在设置第二个的时候上一个节点的属性就不见了不能保存,就是保存了在我还没全部画好之后我还有可能改动结点的熟悉,但是最后的xml文件里面我只要最终的属性,现在我想用哈希表去实现,就是一个节点图形的ID为键,属性为键值,但是这个事一对一的关系,我一个节点图像包括好多属性的,只能说属性名称和属性是一对一的关系啊,那我要删除一个节点的他的全部属性页都要被删除,我怎么去找这个节点呢?
请高手赐教啊?
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝海D鱼 2009-04-18
  • 打赏
  • 举报
回复
不是很明白,感觉 如果很多属性 可以做成 实体类,然后存在hashtable 里面
还有就是 节点删除前,做好善后工作,那你为什么还要去找这个节点那?或者你可以给这个节点加个属性 enable 或者 disable ,这样就不用删除了,只是用的时候判断一下
orain 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shuiwenyu 的回复:]
引用 2 楼 orain 的回复:
为什么不在 hashtable 里保存节点 ID 和节点呢?生成 XML 可以直接序列化啊,最好用 Dictionary <>。

能不能说的详细点啊
不明白
[/Quote]
这个前提是节点类的源码你能够进行修改,那么你就可以控制节点类的序列化过程(要序列化哪些属性,序列化后是XML 元素还是 XML 属性,序列化后的名称等等)。关于 XML 序列化的具体细节,在 System.Xml.Serialization 名称空间,查一下 MSDN 就知道了。序列化后也可以从 XML 文件中直接反序列化,你就可以得到一个节点的集合了。
至于 Dictionary<>,假如你的 ID 是 int,节点是 FlowNode,那么 Dictionary<int, FlowNode> 就相当于你的hashtable 了,只是前者是强类型的,不用你将类型转来转去的,一不小心就出错。
如果你改不了节点类的源码,那就按照 Garnett_KG 说的,建一个属性类,但存成 XML 文件时仍然推荐你使用 XML 序列化,很方便的。
wonsoft 2009-04-18
  • 打赏
  • 举报
回复
Garnett_KG 2009-04-18
  • 打赏
  • 举报
回复
key是你的节点的ID啊。
shuiwenyu 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Garnett_KG 的回复:]
建立一个表示属性集合的类,然后每个节点NEW一个该类的实例,保存在HASHTABLE中就好了.


C# code
class FlowProperty
{
string name; //属性1
string id; //属性2
.....

}

//节点1的
FlowProperty f1=new FlowProperty();
f1.name="flow1";
....

Hashtable.Add(key,f1);
....
[/Quote]
这个key值是什么呢
shuiwenyu 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 orain 的回复:]
为什么不在 hashtable 里保存节点 ID 和节点呢?生成 XML 可以直接序列化啊,最好用 Dictionary <>。
[/Quote]
能不能说的详细点啊
不明白
Garnett_KG 2009-04-18
  • 打赏
  • 举报
回复
建立一个表示属性集合的类,然后每个节点NEW一个该类的实例,保存在HASHTABLE中就好了.


class FlowProperty
{
string name; //属性1
string id; //属性2
.....

}

//节点1的
FlowProperty f1=new FlowProperty();
f1.name="flow1";
....

Hashtable.Add(key,f1);
....



orain 2009-04-18
  • 打赏
  • 举报
回复
为什么不在 hashtable 里保存节点 ID 和节点呢?生成 XML 可以直接序列化啊,最好用 Dictionary<>。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧