Explorer
KNOW-PAT-160

WPF — AppServices composition root sans DI container

Domaine
dev-general
Type
pattern
Priorité
P2

Parent : [[INDEX-DEV-GENERAL]]

WPF AppServices — composition root léger

Problème

App WPF multi-pages a besoin d'état partagé (catalog, engine, snapshots) sans installer un DI container complet.

Solution

Singleton AppServices.Current initialisé une fois dans App.OnStartup. Pages lisent les services via AppServices.Current. App.OnExit dispose ressources longues durée (Boost.Dispose()).

Exemple

public static class AppServices {
  public static AppServices Current { get; private set; }
  public TweakEngine Tweaks { get; }
  public SnapshotStore Snapshots { get; }
  public static void Initialize() { Current = new AppServices(); }
}

Source projet

  • GameTune/AppServices.cs
  • GameTune/App.xaml.cs