Demonstrate HLD and LLD for a simple WPF application using MVVM, Dependency Injection, and the Repository Pattern.
TheMovie er et simpelt WPF-program til at administrere bestillinger af billettere og visning af film. Det demonstrerer arkitekturprincipper som MVVM, Dependency Injection og Repository-mønsteret.
- Liste, tilføj, rediger og slet film.
- Liste, tilføj, rediger og slet filminstruktør for film.
- Liste, tilføj, rediger og slet biograf.
- Liste, tilføj, rediger og slet sal for biograf.
- Liste, tilføj, rediger og slet visninger (screenings) for film.
- WPF (.net 9) # Det grafiske brugergrænsefladelag baseret på XAML.
- Windows 10 eller nyere
- .NET 9 SDK eller nyere
- Klon dette repository: `git clone
- Naviger til projektmappen:
cd TheMovie - Kør powershell script for at hente eksempel data:
.\CopySampleData.ps1 - Byg og kør applikationen:
dotnet run --project src/TheMovie.UI/TheMovie.UI.csproj - Brug applikationen til at administrere film, biografer og visninger.
- Dependency Injection: Konfigureret i App.OnStartup via Host.CreateDefaultBuilder.
- Repository-mønster: In-memory generisk base + konkret Movie-repository.
- MVVM: ViewModels eksponerer bindbar tilstand og ICommand-instancer.
- Validering: Simpel kommando-gating og input-parsing (DurationText).
- Udvidbarhed: Udskift in-memory-repo med en persistent implementering ved at opdatere registreringer.
- Reel persistens (SQLite / EF Core) til flere brugere.
Se Ordliste for en dansk-engelsk ordliste.
src/
TheMovie.Domain/ # Core domain logic
Entities/ # Core domain entity types (e.g., Movie)
ValueObjects/ # Immutable value objects (e.g., Genre, if added) (Other domain)
TheMovie.Application/ # Pure business logic; no UI or infra dependencies
Abstractions/ # Interfaces (e.g., IMovieRepository) used by higher layers
DependencyInjection.cs # Extension method to register application services
TheMovie.Infrastructure/
Data/ # In-memory repository implementations
DependencyInjection.cs # Registers infrastructure services (repositories)
TheMovie.UI/
Views/ # WPF Pages/Windows (AddMovieView, MainWindow)
ViewModels/ # MVVM ViewModel classes (MovieViewModel, option VMs)
Converters/ # WPF value converters (e.g., NullToVisibilityConverter)
Commands/ # Reusable ICommand implementations (RelayCommand)
App.xaml(.cs) # WPF application bootstrapping + DI host setup
tests/
TheMovie.UI.Tests/
Fakes/ # Test doubles (e.g., FakeMovieRepository)
ViewModels/ # Unit tests for ViewModels



