bear_csdn 2022-07-06 23:57 采纳率: 50%
浏览 11
已结题

对象双向同步信息问题

问题遇到的现象和发生背景

正在处理一个XML,每一个有子节点的XmlElement 就会创建一个对象,整个程序形成树形结构。在树干或者树枝节点修改后,怎么同步一些信息到根部对象中。

问题相关代码,请勿粘贴截图
    public class Root
    {
        private List<int> counts = new List<int>();     //字段:记录子节点数量记录
        private XmlDocument xmlDocument;                //文件对象

        private List<Node> nodes;                       //子节点对象

        /// <summary>
        /// (当前对象为爷爷),子节点(儿子)对象的 子节点(孙子)的数量列表
        /// </summary>
        public List<int> Counts { get { return counts; } }

        public Root(string xmlPath)
        {
            //创建文件对象
            xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(xmlPath);

            //循环创建子节点对象,并记录子节点信息
            foreach (XmlNode item in xmlDocument.ChildNodes)
            {
                Node node = new Node(item);
                this.nodes.Add(node);
                this.counts.Add(item.ChildNodes.Count);         //目前假如这里保存的是子节点对象的 “子节点”数量
            }
        }
    }

    /// <summary>
    /// 子节点对象
    /// </summary>
    public class Node
    {
        private XmlNode xmlNode;
        public Node(XmlNode xmlNode)
        {
            this.xmlNode = xmlNode;

        }

        public void Edit()
        {
            XmlElement xmlElement = this.xmlNode.OwnerDocument.CreateElement("创建子节点");      //创建节点
            this.xmlNode.AppendChild(xmlElement);                                               //添加为当前对象的子节点
            /*
             * 如果在这里修改了this.xmlNode。因为this.xmlNode是一个对象,修改可以直接变动了引用着C# (Root类)的xmlDocument对象内容。
             * 
             * 需求:怎么在这里修改后才能自动同步Root类中的counts列表。由于其他对象会获取经常需要获取。
             * 并且Node并是不最基础的节点
             * 
             * 求教方法或者思路。有简单的示例代码更好
             */
        }
    }

运行结果及报错内容

没有报错

我的解答思路和尝试过的方法

想过去在node类中设置一个委托或者事件,在root中绑定,但我需要创建N多个类似的node类,并且还是一个套一个。这样就太麻烦了。
也想过类似word那种,在XmlElement 设置一个属性,检查属性值,判断是否修改过,但这样就需要定时检查,也不太合理。

我想要达到的结果

同步修改或者类似的效果

  • 写回答

1条回答 默认 最新

  • bear_csdn 2022-07-07 18:13
    关注

    大家都没遇到这种问题吗,怎么都没人讨论下啊。
    我今天在想如果我定义一个静态类,Root每100毫秒扫描下静态类,看是否存在数据。存在则重新计算。修改对象的Node类每次再修改前也判断一次静态类是否存在数据,存在则等待100毫秒,不存在则直接修改,并修改静态类。

    这样目前貌似能解决问题,就是效率低下。

    评论

报告相同问题?

问题事件

  • 系统已结题 7月14日
  • 创建了问题 7月6日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题