2009-09-03 11 views
7

Sto scrivendo un documento di un'applicazione client-based e ho bisogno di un DOM o WPF -come, ma modello non-visiva che:Modello gerarchico di oggetti con ereditarietà delle proprietà e bubbling degli eventi?

  • è un albero composto da elementi
  • può accettare un numero illimitato di proprietà personalizzate che
    • get/set qualsiasi tipo CLR, i ncludendo le collezioni.
    • Can ereditare i loro valori dal loro genitore
    • possono ereditare i loro valori di default da un antenato
    • può essere derivato/calcolati da altre proprietà, antenati o discendenti
    • supporto bubbling degli eventi/tunneling
    • Ci sarà un nucleo di proprietà ma altri plug-in possono aggiungere o addirittura creare documenti personalizzati
  • Supporta il controllo completo dal documento proprietario per mantenere l'albero e gli attributi in un formato XML.

Mi rendo conto che è un compito arduo ma speravo davvero che ci fosse qualcosa là fuori che mi aiutasse a iniziare. Sfortunatamente WPF DependencyObjects è troppo chiuso, proprietario e accoppiato a WPF per poter essere utilizzato come modello di documento. Le mie esigenze hanno anche una forte somiglianza con il DOM HTML ma non sono stato in grado di trovare alcuna implementazione DOM pulita che potrebbe essere disaccoppiata da HTML o portata a .NET.

La mia piattaforma corrente è .NET/C# ma se qualcuno sa di tutto ciò che potrebbe essere utile per l'ispirazione o l'incorporamento, indipendentemente dalla piattaforma, mi piacerebbe sapere.

risposta

1

Non penso che soddisfi tutti i requisiti specificati, ma hai pensato di lavorare con un DOM XML (al contrario di un DOM HTML)? È possibile creare un documento XML a livello di programmazione in .NET e manipolarlo utilizzando i metodi e le proprietà DOM e fare anche operazioni come le query XPath. Scopri l'oggetto di .NET XmlDocument. Questo potrebbe essere un punto di partenza ragionevole.

0

Eclipse EMF può essere d'aiuto, ma potrebbe anche essere eccessivo per te. IMHO linguaggio ben progettato dovrebbe rendere questo compito estremamente facile ...

0

La piattaforma Netbeans fa esattamente quello che vuoi.

+0

questo sarebbe stato un commento, anche se abbiamo capito che hai bisogno di 50 rappresentanti per postare commenti. Quindi, per favore aggiungi ulteriori informazioni rilevanti per supportare la tua risposta. – bonCodigo

0

Sei alla ricerca di un consiglio per un modello a oggetti? Che ne dite:

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

e passare da lì?

Problemi correlati