TableRecipe

Prof. Dr. Robin Nunkesser

Agent-generated Example: Collections / Table

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 table / collections (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 Fokus auf Navigation + asynchrones Gruppierungsupdate
MVVM Ja Commands und Binding sind Kern des Themas
Unit Tests Ja (MSTest) Menü-Navigation und Update-Logik testbar ohne UI
Core-Projekt + Interfaces Nein Kein Persistenz- oder API-Szenario
Architektur-Schichten Nein Für dieses Demoziel nicht erforderlich

Ergebnis (agent-generated)

  • CommunityToolkit.Mvvm in neuem Projekt TableRecipe.ViewModels
  • MainViewModel navigiert über Interface IPageNavigator statt direkter UI-Abhängigkeit
  • VerticalListGroupingAsyncUpdateViewModel mit UpdateCommand und IsBusy
  • DI-Verdrahtung für Pages, ViewModels und Navigator in MauiProgram.cs
  • Shell-Routing statt Reflection-basierter Page-Instanziierung
  • MSTest-Projekt TableRecipe.Tests mit 4 Tests
  • MacCatalyst-Workaround gesetzt: ValidateXcodeVersion=false, SupportedOSPlatformVersion=15.0

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Navigation Activator.CreateInstance + INavigation Route-basierte Navigation über Interface
ViewModel-Basis manuelles Pattern CommunityToolkit.Mvvm
Async Update async void + manuelle PropertyChanged IAsyncRelayCommand + ObservableProperty
DI kaum genutzt systematisch für ViewModels/Pages/Services
Tests keine 4 MSTest-Tests

Fazit: Die agent-generated Variante ist didaktisch klarer, testbarer und für fortgeschrittene Studierende als Ersatz des manuellen Beispiels geeignet.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test TableRecipe.Tests/TableRecipe.Tests.csproj → 4/4 erfolgreich
  • MacCatalyst-Build: dotnet build TableRecipe/TableRecipe.csproj -f net9.0-maccatalyst → erfolgreich