Scaffold Modules

In order to provide full control and a wide range of possibilities, the runtime generator of Emeraude Framework is designed to consume manually created scaffold modules. A scaffold module is an implementation of a generation module that contains all required definitions and references in order to provide a complete solution of code generation. To clarify the concept of scaffold modules please check the schema below:

Scaffold Module Workflow

Each module is an implementation of ScaffoldModule abstract class that contains:

  • Order - generation order
  • Name - name of the module used for identification as well
  • IconUrl - icon of the module
  • ScaffoldTypeName - type name of the module(the main use of this property is to give the name of the grouped modules)
  • Type - instance type of the module - target application type of the generation (web, mobile, etc.)
  • ClientId - identification of the module by client type that allows easy modules grouping
  • Files - list of files for generation
  • Folders - list of folders for generation
  • Locked - flag that indicates that the module generated files is locked for changes or not

Each module implementation have to implement two core methods:

    public override void DefineFiles()
    {
        // here you need to define the files of the module
    }

    public override void DefineFolders()
    {
        // here you need to define the folders of the module
    }

A sample scaffold module can be found on here.

Options

In order to configure which modules can be used and the behavior of the Client Builder as a feature you can use the following options:

  • EnableClientBuilder - flag that enable/disable the client builder
  • Assemblies - list of all assemblies that will be used for assembly scanning
  • ModulesTypes - list of all modules types that will be applied into the scaffold module factory
  • ConstantsTypes - list of all types that contains constants
  • Constants - list of all manual entered constants
  • ClientApplicationsPaths - a dictionary for specifying the target directory for generation result based on client name