FrymasterBadgeApp/Documentation/MauiProgramCS.md

1.8 KiB

MauiProgram

Namespace: FrymasterBadgeApp
Type: static class
Purpose: MAUI application bootstrap. Handles dependency injection setup, configuration loading, font registration, and service factory creation.

📦 Methods

CreateMauiApp()

  • Access: public static
  • Returns: MauiApp
  • Behavior:
    1. Logs startup.
    2. Initializes MauiAppBuilder, enables CommunityToolkit, and sets fonts (OpenSans, BarcodeFont).
    3. Calls LoadConfiguration(builder).
    4. Registers services:
      • SqlService: Factory-resolves connection string from IConfiguration. Falls back to hardcoded Server=127.0.0.1... if missing. Logs warning.
      • PrinterService: Singleton.
      • AppShell: Singleton.
      • EmployeePage, CompanyPage, SettingsPage: Transient.
    5. Enables debug logging in DEBUG builds.
    6. Builds and returns MauiApp.

LoadConfiguration(MauiAppBuilder builder)

  • Access: private static
  • Behavior: Configuration fallback chain:
    1. Primary: Loads appsettings.json via FileSystem.OpenAppPackageFileAsync(). Parses and injects into builder.
    2. Fallback 1: If file system fails, attempts Assembly.GetManifestResourceStream("FrymasterBadgeApp.Resources.Raw.appsettings.json").
    3. Fallback 2: If both fail, silently returns (triggers SqlService hardcoded fallback).
    4. Logs success or warnings at each stage.

💡 Developer Notes:

  • ⚠️ Security Warning: Hardcoded fallback connection string (User Id=sa;Password=YourPassword123;) should be removed or masked before production deployment.
  • Configuration loading gracefully degrades, preventing app crashes on missing config files.
  • Service lifetimes are appropriately scoped (Singleton for app-wide services, Transient for UI pages).