7
votes

Modèle d'objet hiérarchique avec héritage de propriété et bouillonnement d'événement?

J'écris une application cliente basée sur des documents et j'ai besoin d'un dom ou wpf -itant, mais modèle non visuel :

  • est un arbre composé d'éléments
  • peut accepter un nombre illimité de Propriétés personnalisées que
    • Obtenez / définissez tout type de CLR, y compris les collections.
    • peut hériter leurs valeurs de leur parent
    • peut hériter de leurs valeurs par défaut d'un ancêtre
    • peut être dérivé / calculé d'autres propriétés, ancêtres ou descendants
    • Support Événement Bullbing / Tunneling
    • Il y aura un ensemble de propriétés de base, mais d'autres plugins peuvent ajouter leur propre ou même créer des documents personnalisés
    • prend en charge l'inspection complète par le document de possession afin de persister l'arborescence et les attributs d'un format XML.

      Je me rends compte que c'est un bon ordre, mais j'espérais vraiment qu'il y aurait autre chose pour m'aider à commencer à commencer. Malheureusement, la dépendance du WPF est trop fermée, dépréciée et couplée au WPF de n'importe quelle utilisation en tant que modèle de document. Mes besoins ont également une plus grande ressemblance avec le HTML DOM, mais je n'ai pas été en mesure de trouver des implémentations de Dom propres pouvant être découplées de HTML ou portées à .NET.

      Ma plate-forme actuelle est .NET / C # mais si quelqu'un sait de tout ce qui pourrait être utile pour inspiration ou incorporer, quelle que soit la plate-forme , j'aimerais savoir.


0 commentaires

5 Réponses :


1
votes

Je ne pense pas que cela réponde à toutes les exigences que vous avez spécifiées, mais avez-vous envisagé de travailler avec un DOM XML (par opposition à un DOM HTML)? Vous pouvez créer un document XML programmatiquement dans .NET et le manipuler à l'aide de méthodes et de propriétés DOM, ainsi que des choses comme des requêtes XPath. Découvrez .net's xmldocument objet. Cela pourrait être un point de départ raisonnable.


0 commentaires

0
votes

Peut-être Xmlbeans pourrait aider.


0 commentaires

0
votes

Eclipse EMF pourrait aider, mais cela pourrait aussi être trop excitée pour vous. IMHO Bon langage conçu devrait faire une telle tâche extrêmement facile ...


0 commentaires

0
votes

La plate-forme NetBeans fait à peu près exactement ce que vous voulez.


1 commentaires

Cela aurait été un commentaire - bien que nous comprenions, vous avez besoin de 50 représentants pour publier des commentaires. Par conséquent, ajoutez des informations plus pertinentes pour appuyer votre réponse.



0
votes

Recherchez-vous des conseils pour un modèle d'objet? Que diriez-vous:

// 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.
}


0 commentaires