Pregunta

Google no va a venir a mi rescate, aquí, y acabo de saber este es el lugar perfecto para hacer.

Estoy escribiendo una costumbre DirectiveProcessor para un DSL y quiero ser capaz de tener acceso a un diagrama de dentro de mi T4 plantilla.

Dentro de mi DirectiveProcessor, me he cargado el modelo de dominio y mi diagrama utilizando (esperar a que...) LoadModelAndDiagram(...).

Por lo tanto, ahora el diagrama de carga en la partición predeterminada en la Tienda, pero no puedo por la vida de mí cómo resolver una referencia a ella más tarde.

¿Alguien puede guiar el camino?

¿Fue útil?

Solución

Bien, después de un montón de trabajo adicional, decidí que no tenía la necesidad de acceder a mi diagrama **en** una costumbre DirectiveProcessor.

Aún tengo un custom DirectiveProcessor debido a que la norma genera uno no carga el diagrama existente cuando se carga el modelo de dominio.

Conseguir una costumbre DirectiveProcessor para cargar el diagrama de modelo y, al mismo tiempo, es extremadamente fácil.Subclase estándar generado DirectiveProcessor base de clase y reemplazar:

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

Ahora, tenemos el diagrama de carga, así que para volver a la pregunta original, ¿cómo podemos acceder a ella?Como este:

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

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

Ahora, este código funciona bien si usted tiene un diagrama de carga.Si no, diagrama de va a volver como null, en cuyo caso, se tiene que cargar el diagrama de forma explícita o crear uno de forma dinámica.

No voy a entrar en eso, aquí.Tal vez en mi blog cuando he tenido algún sueño!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top