Konfigurationen werden in der Regel im Benutzerinterface erstellt und bei Bedarf exportiert und in das Projekt eingebunden. Als weitere Möglichkeit können Konfigurationen programmatisch generiert werden. Diese werden zur Laufzeit erstellt und nur in den internen Konfigurationscache abgelegt. Damit sind sie verwendbar können aber im Benutzerinterface nicht geändert werden. Der Vorteil dabei ist, das diese Konfigurationen unter der Kontrolle des Entwicklers sind und beliebig programmatisch geändert werden können.

Beispielsweise kann man eine Ansicht für einen Dialog definieren. Das Beispiel kann in beliebigen Stellen im Code ausgeführt werden. Es muss nur sichergestellt werden, das es vor dem nutzen selbiger ausgeführt wird.

Guid GridId = "609C5026-F459-40B6-9878-EA6534DF66BA".ToGuid();
if (!Api.Config.ContainsKey(GridId))
{
    // Ansichtenkonfiguration erstellen
    GridViewConfiguration engineGrid = new GridViewConfiguration()
    {
        Id = GridId,
        ConfigurationName = "MyGridInDialog",
        ShowSearchPanel = false,
        ShowFilterRowForColummns = false,
    };
    // Initialisieren
    engineGrid.Initialize();
    // Spalten hinzufügen (Hier eine Textspalte)
    engineGrid.FloatingColumns.Columns.Add(new TextBoxColumn()
    {
        OrmFieldName = nameof(OrmMyDataTable.EntityTitle),
        Caption = "Name"
    });
    // In den Konfigurationschache legen
    Api.Config.RefreshSingleConfigurationCache(engineGrid);
}

Häufig ist es sinnvoll die Konfigurationen zentral zu erstellen, damit sie beim Start der Maschine erstellt werden. Beispielweise dann, wenn diese Konfigurationen in anderen Konfigurationen genutzt werden sollen. Dazu wird eine Klasse erstellt, die das Interface ICreateDynamicConfiguration implementiert

namespace BA.Training.Configuration
{
    /// <summary>
    /// Klasse zum erstellen von dynamischen Konfigurationen
    /// </summary>
    public class CreateDynamicConfigurationsForTraining : ICreateDynamicConfiguration
    {
        public void CreateConfigurations()
        {
            ...
        }
    }
}