1.8 KiB
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:
- Logs startup.
- Initializes
MauiAppBuilder, enablesCommunityToolkit, and sets fonts (OpenSans,BarcodeFont). - Calls
LoadConfiguration(builder). - Registers services:
SqlService: Factory-resolves connection string fromIConfiguration. Falls back to hardcodedServer=127.0.0.1...if missing. Logs warning.PrinterService: Singleton.AppShell: Singleton.EmployeePage,CompanyPage,SettingsPage: Transient.
- Enables debug logging in
DEBUGbuilds. - Builds and returns
MauiApp.
LoadConfiguration(MauiAppBuilder builder)
- Access:
private static - Behavior: Configuration fallback chain:
- Primary: Loads
appsettings.jsonviaFileSystem.OpenAppPackageFileAsync(). Parses and injects into builder. - Fallback 1: If file system fails, attempts
Assembly.GetManifestResourceStream("FrymasterBadgeApp.Resources.Raw.appsettings.json"). - Fallback 2: If both fail, silently returns (triggers
SqlServicehardcoded fallback). - Logs success or warnings at each stage.
- Primary: Loads
💡 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).