【问题标题】:Hierarchical object model with property inheritance and event bubbling?具有属性继承和事件冒泡的分层对象模型?
【发布时间】:2010-11-25 03:57:47
【问题描述】:

我正在编写一个基于文档的客户端应用程序,我需要一个类似 DOMWPF非可视模型:

  • 是由元素组成的
  • 可以接受无限数量的自定义属性
    • 获取/设置任何 CLR 类型,包括集合。
    • 可以继承父母的价值观
    • 可以从祖先那里继承默认值
    • 可以从其他属性、祖先或后代派生/计算
    • 支持事件冒泡/隧道
    • 会有一组核心属性,但其他插件可能会添加自己的甚至创建自定义文档
  • 支持拥有文档的完整检查,以便以 XML 格式保存树和属性。

我意识到这是一项艰巨的任务,但我真的希望有一些东西可以帮助我开始。不幸的是,WPF DependencyObjects 过于封闭、专有且与 WPF 耦合,无法用作文档模型。我的需求也与 HTML DOM 非常相似,但我无法找到任何可以与 HTML 分离或移植到 .NET 的干净 DOM 实现。

我当前的平台是 .NET/C#,但如果有人知道任何可能对灵感或嵌入有用的东西,无论平台如何,我很想知道。

【问题讨论】:

    标签: c# java dom model client


    【解决方案1】:

    我认为它不能满足您指定的所有要求,但是您是否考虑过使用 XML DOM(而不是 HTML DOM)?您可以在 .NET 中以编程方式创建 XML 文档并使用 DOM 方法和属性对其进行操作,还可以执行 XPath 查询之类的操作。查看 .NET 的 XmlDocument 对象。这可能是一个合理的起点。

    【讨论】:

      【解决方案2】:

      也许XMLBeans 会有所帮助。

      【讨论】:

        【解决方案3】:

        Eclipse EMF 可能会有所帮助,但对您来说也可能是矫枉过正。恕我直言,良好的设计语言应该使这样的任务变得非常容易......

        【讨论】:

          【解决方案4】:

          Netbeans 平台几乎可以满足您的需求。

          【讨论】:

          • 这应该是一条评论 - 尽管我们知道您需要 50 个代表才能发布 cmets。因此,请添加更多相关信息以支持您的回答。
          【解决方案5】:

          您是否正在寻找有关对象模型的建议?怎么样:

          // C#-ish code that probably doesn't compile
          class Element {
              public object GetAttribute(string attribute) {
                  if (this.Attributes.HasKey(attribute))
                      return this.Attributes[attribute];
                  else
                      return this.Parent.GetAttribute(attribute);
              }
          
              private IDictionary<string,object> Attributes;
          
              private Element Parent;
              private IList<Element> Children;    // maybe not needed
          
              // etc.
          }
          

          然后从那里去?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-12-27
            • 1970-01-01
            • 1970-01-01
            • 2011-04-13
            • 2017-02-23
            • 2015-06-23
            • 1970-01-01
            相关资源
            最近更新 更多