Frage

Google ist nicht zu meiner Rettung kommen, hier, und ich nur wissen, Dies ist der perfekte Ort zu fragen.

Ich schreibe eine benutzerdefinierte DirectiveProcessor für einen DSL und ich möchte aus meinem T4-Vorlage ein Diagramm zugreifen können.

In meinem DirectiveProcessor, ich habe das Domain-Modell geladen und mein Diagramm mit (warten Sie, ...) LoadModelAndDiagram (...).

So, jetzt im Store des in die Standard-Partition geladen ist Diagramm, aber ich kann für das Leben von mir nicht herausfinden, wie ein Verweis auf mich später zu lösen.

Kann mir jemand den Weg führen?

War es hilfreich?

Lösung

Nun, nach vielen weiteren Arbeiten, entschied ich brauchte nicht mein Diagramm zugreifen ** aus ** einer benutzerdefinierten DirectiveProcessor.

Ich habe noch eine benutzerdefinierte DirectiveProcessor weil der Standard erzeugt ein das vorhandene Diagramm nicht geladen werden, wenn sie das Domänenmodell lädt.

Wie Sie einen benutzerdefinierten DirectiveProcessor das Diagramm und das Modell zur gleichen Zeit zu laden, ist trivial einfach. Sie Unterklasse der Standard erzeugt DirectiveProcessor Basisklasse und überschreiben:

protected override bool LoadDiagramData
{
    get
    {
        return true;
    }
}

Jetzt haben wir das Diagramm geladen, also zurück auf die ursprüngliche Frage zu bekommen, wie greifen wir es? Wie folgt aus:

using (Transaction t = partition.Store.TransactionManager
           .BeginTransaction("MyTxn", true))
{
    MyDslDiagram diagram = partition.ElementDirectory
        .FindElements<MyDslDiagram>(true).SingleOrDefault();

    /*
     * Now, do stuff with your diagram.
     *
     */
}

Nun, funktioniert dieser Code nur gut, wenn Sie ein Diagramm geladen haben. Wenn Sie dies nicht tun, Diagramm wird als zurückkommen null , wobei in diesem Fall entweder wir das Diagramm explizit laden oder erstellen eine dynamisch.

Ich werde nicht darauf eingehen, hier. Vielleicht auf meinem Blog , wenn ich etwas Schlaf gehabt haben!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top