Navigation

Prof. Dr. Robin Nunkesser

Agentisches Beispiel: Navigation

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md

Exakter Prompt

Erstelle ein agent-generated example für Navigation (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal. Wende MVVM mit CommunityToolkit.Mvvm und Unit Tests mit MSTest an.
Entscheide anhand der Architektur-Entscheidungstabelle aus den Instructions, welche weiteren Muster (Core-Projekt, Architekturschichten) das Konzept rechtfertigt — verwende sie, wenn dieselbe Komplexität in einem produktiven Einsatz diese Strukturen erfordern würde.
Lies zuerst die Instructions, ermittle den Foliensatz, dokumentiere Instructions + Prompt dort, vergleiche mit manuellem Beispiel, verifiziere MacCatalyst Build mit workaround zum mismatch des workloads mit der xcode version.

Architekturentscheidung (gemäß Tabelle)

Aspekt Entscheidung Begründung
Feature-Scope Minimal (eine tiefe Navigation) Fokus auf Routing + Query-Übergabe
MVVM Ja Navigation wird als Command im ViewModel gezeigt
Unit Tests Ja (MSTest) Navigationskommando und Lifecycle-Status testbar
Core-Projekt + Interfaces Nein Kein Domänenmodell/keine Persistenz erforderlich
Architekturschichten Nein Für diese Komplexität unnötig

Ergebnis (agent-generated)

  • Shell-Route für zweite Ebene (SecondLevelPage) mit Query-Parameter text
  • MyFirstTabViewModel in separatem Projekt NavigationRecipe.ViewModels
  • CommunityToolkit.Mvvm (ObservableProperty, RelayCommand) für testbare Navigationslogik
  • MSTest-Projekt NavigationRecipe.Tests mit 3 Tests (Command, CanExecute, Lifecycle)
  • MacCatalyst-Workaround gesetzt: ValidateXcodeVersion=false, SupportedOSPlatformVersion=15.0

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Navigation Code-Behind mit PushAsync(new SecondLevelPage(...)) Command-basiert über INavigationService
Datenübergabe Konstruktorparameter der Zielseite Shell-Query ?text=...
MVVM nein ja (MyFirstTabViewModel)
Unit Tests nein ja (MSTest, 3 Tests)
Lifecycle-Sichtbarkeit keine Lernrückmeldung Statusanzeige via ViewModel
Architekturschichten nein nein (bewusst, gemäß Tabelle)

Fazit: Das agent-generated Beispiel zeigt dieselbe fachliche Navigation, aber didaktisch robuster durch testbare Commands, klare Zustandsführung und reproduzierbare Verifikation.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test NavigationRecipe.Tests/NavigationRecipe.Tests.csproj -f net10.0 → 3/3 erfolgreich
  • MacCatalyst-Build: dotnet build NavigationRecipe/NavigationRecipe.csproj -f net10.0-maccatalyst → erfolgreich