2009-09-03 11 views
7

Piszę aplikację kliencką dokumentu opartego i muszę DOM lub WPF -like, ale non-wideo model, który:Hierarchiczny model obiektowy z dziedziczeniem właściwości i propagowaniem zdarzeń?

  • Czy drzewo składa się z elementów
  • można przyjąć nieograniczoną liczbę właściwości niestandardowych że
    • get/set dowolny typ CLR, I w tym zbiory.
    • Can dziedziczą ich wartości od rodzica
    • może dziedziczyć ich wartości domyślnych z przodka
    • można pochodzące/obliczeniowe z innych właściwości, przodków lub potomków
    • Wsparcia zdarzenie propagacji/tunelowanie
    • Pojawi się podstawowy zestaw właściwości, ale inne wtyczki mogą dodawać własne lub nawet tworzyć niestandardowe dokumenty.
  • Obsługuje pełną inspekcję przez posiadany dokument w celu utrwalenia drzewa i atrybutów w formacie XML.

Rozumiem, że to wysoki rozkaz, ale miałem nadzieję, że będzie coś, co pomoże mi zacząć. Niestety, funkcje WPF DependencyObjects są zbyt zamknięte, zastrzeżone i połączone z WPF, aby mogły być używane jako model dokumentu. Moje potrzeby są również bardzo podobne do HTML DOM, ale nie udało mi się znaleźć żadnych czystych implementacji DOM, które można oddzielić od HTML lub przenieść do .NET.

Moja obecna platforma to .NET/C#, ale jeśli ktokolwiek wie o czymś, co może być przydatne do inspiracji lub osadzenia, , niezależnie od platformy, chciałbym wiedzieć.

Odpowiedz

1

Nie sądzę, że spełnia wszystkie określone wymagania, ale czy rozważałeś pracę z XML DOM (w przeciwieństwie do HTML DOM)? Można utworzyć dokument XML programowo w .NET i manipulować nim przy użyciu metod i właściwości DOM, a także wykonywać takie czynności, jak zapytania XPath. Sprawdź obiekt .NET pod nazwą XmlDocument. To może być rozsądny punkt wyjścia.

0

Eclipse EMF może pomóc, ale może to być również przesada dla Ciebie. IMHO dobrze zaprojektowany język sprawi, że takie zadanie będzie niezwykle łatwe ...

0

Platforma Netbeans robi dokładnie to, czego oczekujesz.

+0

byłby to komentarz - chociaż rozumiemy, że potrzebujesz 50 przedstawiciela do zamieszczania komentarzy. Dlatego proszę dodać więcej istotnych informacji, aby wesprzeć odpowiedź. – bonCodigo

0

Szukasz porady dotyczącej modelu obiektu? Co powiesz na:

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

i dalej?

Powiązane problemy