Compartilhar classes entre DSLs
No SDK de Visualização e Modelagem do Visual Studio, você pode criar uma Definição de DSL incompleta que pode ser importada para outra DSL. Essa abordagem permite fatorar partes comuns de modelos semelhantes.
Observação
O componente Transformação de Modelo de Texto é instalado automaticamente como parte da carga de trabalho de Desenvolvimento de extensões do Visual Studio. Você também pode instalá-lo na guia Componentes individuais do Instalador do Visual Studio, na categoria SDKs, bibliotecas e estruturas. Instale o componente SDK de Modelagem na guia Componentes individuais.
Criar um projeto DSL
Crie um novo projeto DSL e escolha o modelo de solução Biblioteca de DSL.
Um projeto DSL único é criado com um modelo vazio.
Você pode adicionar classes de domínio, relações, formas, entre outros. Os elementos na biblioteca não precisam formar uma árvore de inserção única. Para definir uma relação que os importadores podem usar, crie duas classes de domínio e a relação entre elas.
Cogite definir o Modificador de Herança das classes de domínio como
Abstract
.Você pode adicionar elementos que você definiu no Gerenciador de DSL, como Construtores de Conexões.
Você pode adicionar personalizações que exigem mais códigos, como restrições de validação.
Selecione Transformar Todos os Modelos.
Compile o projeto.
Ao distribuir a DSL para outras pessoas usarem, você deve fornecer tanto o assembly compilado (DLL) quanto o arquivo DslDefinition.dsl. Você pode encontrar o assembly compilado em uma pasta em Dsl\bin*.
Importar uma Biblioteca de DSL
Em outra Definição de DSL, no Gerenciador de DSL, clique com o botão direito do mouse na classe raiz da DSL e selecione Adicionar Nova Importação de DslLibrary.
Na janela Propriedades, defina o Caminho do Arquivo da biblioteca. Você pode usar um caminho absoluto ou relativo.
A biblioteca importada aparece no Gerenciador de DSL, no modo somente leitura.
Você pode usar as classes importadas como classes base. Crie uma classe de domínio na DSL de importação e, na janela Propriedades, defina Classe Base como uma classe importada.
Selecione Transformar Todos os Modelos.
Adicione, ao projeto DSL, uma referência ao assembly (DLL) que foi criado pelo projeto da Biblioteca de DSL.
Compile a solução.