Opgave: Generic JsonFileService


I denne opgave tager vi udgangspunkt i eksemplet ItemsRazor ItemRazorV6.zip





Opgaven går ud på at, det skal den service der gemmer objekterne i en Json-fil skal gøres generisk, således at klassen kan benyttes til at gemme både Items-objekter og User-objekter.


Step 1 (JsonFileService)

  1. Omdøb (rename) JsonFileItemService til JsonFileService.
  2. Omdøb metoderne i klassen så de ikke indeholder termen "Item" (benyt "objects" istedet)
  3. Gør klassen JsonFileService generisk.
    Hint:
    benyt typeof(T).Name + "s.json" som filnavn.


Step 2 (Startup.cs)
Ret startup.cs linie 34 så den benytter den generiske klasse; services.AddTransient<JsonFileService<Item>>();



Step 3 (ItemService)
Refaktorer ItemService så den benytter den generiske JsonFileService.

 

Step 4 (Afprøv)
Afprøv at det refaktorerede program virker.

 

 

I stedet for MockUsers skal der nu benyttes JsonFileService.

Step 5 (UserService)
Refaktorer UserService så den benytter den generiske JsonFileService i stedet for MockData.

Husk: at registrere den nye Service i Startup.cs: services.AddTransient<JsonFileService<User>>(); og Injicer (inject) JsonFileService i konstruktøren til UserService (se evt. ItemService).
Bemærk: Første gang programmet køres efter refaktorering, er det lettest at indlæse MockUsers og kalde JsonFileService.SaveJsonObjects(Users); for at få lavet json-filen. Efterfølgen indlæses fra Json-filen i stedet for MockData.

 

Step 6 (Afprøv)
Afprøv at det refaktorerede program virker.

 


God fornøjelse!
Henrik Høltzer