Domanda

Google non è venuta in mio aiuto, qui, e ho appena sapere questo è il posto giusto per chiedere.

Sto scrivendo un custom DirectiveProcessor per una connessione DSL e voglio essere in grado di accedere a un diagramma da dentro il mio modello T4.

Nel mio DirectiveProcessor, ho caricato il modello di dominio e il mio schema di utilizzo (attendere...) LoadModelAndDiagram(...).

Così, ora il diagramma caricato la partizione di default in Negozio, ma non posso per la vita di me a capire come risolvere un riferimento ad esso più tardi.

Chiunque può guidare il modo?

È stato utile?

Soluzione

Bene, dopo un sacco di lavoro, ho deciso che non ho bisogno di accedere al mio diagramma **dall'interno** personalizzate DirectiveProcessor.

Ho ancora un custom DirectiveProcessor perché la norma ha generato uno non carica il diagramma esistente quando viene caricato il modello di dominio.

Ottenere un custom DirectiveProcessor per caricare lo schema e modello, allo stesso tempo, è banalmente facile.Si sottoclasse standard generato DirectiveProcessor di base di classe e di ignorare:

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

Ora, abbiamo il diagramma caricato, quindi, per tornare alla domanda originale, come fare per accedervi?Come questa:

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

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

Ora, questo codice funziona bene se si dispone di un diagramma caricato.Se non, diagramma tornerà come null, in tal caso, si deve caricare il diagramma in modo esplicito o crearne uno in modo dinamico.

Non voglio entrare in quella, qui.Forse il mio blog quando ho avuto un po ' di sonno!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top