FactoryExtensionBase is an abstract base class that allows you to hook into various phases of the Intent Architect Software Factory execution lifecycle. Use it to perform custom operations during code generation, such as validation, post-processing, file manipulation, or external tool integration.
Configuration settings. The default implementation reads the Order property if provided.
public override void Configure(IDictionary<string, string> settings){ base.Configure(settings); // Reads Order from settings // Add custom configuration if (settings.TryGetValue("MyCustomSetting", out var value)) { _customSetting = value; }}
using Intent.Engine;using Intent.Modules.Common.CSharp.Templates;using Intent.Modules.Common.Plugins;public class CSharpFileBuilderFactoryExtension : FactoryExtensionBase{ public override string Id => "Intent.Common.CSharp.CSharpFileBuilderFactoryExtension"; public override int Order => int.MinValue; // Run very early protected override void OnAfterTemplateRegistrations(IApplication application) { var templates = application.OutputTargets .SelectMany(x => x.TemplateInstances) .OfType<ICSharpFileBuilderTemplate>() .ToArray(); foreach (var template in templates) { // Ensure backwards compatibility template.CSharpFile.Template ??= template; } }}
using Intent.Engine;using Intent.Modules.Common.Plugins;public class ValidationFactoryExtension : FactoryExtensionBase{ public override string Id => "MyModule.Validation"; protected override void OnAfterTemplateRegistrations(IApplication application) { var templates = application.OutputTargets .SelectMany(x => x.TemplateInstances) .Where(t => t is IValidatableTemplate) .Cast<IValidatableTemplate>(); foreach (var template in templates) { var errors = template.Validate(); if (errors.Any()) { foreach (var error in errors) { Logging.Log.Warning($"Validation error in {template.Id}: {error}"); } } } }}