MVVMRecipe

Prof. Dr. Robin Nunkesser

Agent-generated Example: MVVM

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md
  • agent-workbench/prompts/recurring/agent-generated-education-example.md

Prompt

Erstelle ein agent-generated example für mvvm (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal (z.B. Todo-Liste). 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

Aspekt Entscheidung Begründung
Feature-Scope Minimal (Todo-Liste) MVVM soll sichtbar bleiben, nicht die Fachlogik
MVVM Ja Datenbindung und Commands sind der Kern des Beispiels
Unit Tests Ja (MSTest) ViewModel-Logik ist ohne UI testbar
Core-Projekt + Interfaces Nein Kein Persistenz-, Netzwerk- oder Integrationsszenario
Architektur-Schichten Nein Für reines MVVM-Demonstrationsziel nicht gerechtfertigt

Ergebnis (agent-generated)

  • Todo-Liste mit AddTodoCommand und ClearCompletedCommand
  • CommunityToolkit.Mvvm statt manuellem INotifyPropertyChanged
  • Constructor Injection für MainPage, AppShell und App
  • x:DataType für Compiled Bindings in XAML
  • Testbares ViewModel in eigenem Projekt MVVMRecipe.ViewModels
  • MSTest-Projekt MVVMRecipe.Tests mit 4 Tests
  • MacCatalyst-Workaround gesetzt: ValidateXcodeVersion=false
  • Migration auf .NET 9, damit aktueller MAUI-Workload baubar ist

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Beispielinhalt Vorname/Nachname + Reset Todo-Liste mit sichtbarem Zustand
Property Change Manuell implementiert [ObservableProperty]
Commands Command manuell [RelayCommand]
DI nein ja (MauiProgram, Constructor Injection)
Tests nein ja (MSTest, 4 Tests)
Projektstruktur Ein MAUI-Projekt MAUI-App + testbares ViewModel-Projekt + Tests

Fazit: Die agent-generated Variante ist didaktisch klarer, näher an realem MAUI-MVVM und für fortgeschrittene Studierende besser als Ersatz geeignet.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test MVVMRecipe.Tests/MVVMRecipe.Tests.csproj → 4/4 erfolgreich
  • MacCatalyst-Build: dotnet build MVVMRecipe/MVVMRecipe.csproj -f net9.0-maccatalyst → erfolgreich
  • Offene Build-Warnung: MA002 zu impliziten MAUI-Paketreferenzen, nicht build-blockierend