Nel post precedente abbiamo visto come sia possibile utilizzare Scrutor per la registrazione automatica di tipi a partire dall’assembly in cui sono definiti.
Nell’esempio precedente tutto si trovava all’interno dello stesso assembly. In questo post vedremo come sia possibile utilizzare assembly separati.
Supponiamo di avere una class library all’interno della quale abbiamo definito tipi ed interfacce: ci troviamo ad esempio all’interno del namespace ClassLibrary.Cities.
All’interno di questa class library troviamo:
- definizione del tipo
- definizione del service che ne permette la gestione
- definizione dell’interfaccia del service, al punto precedente
Ovviamente la web api deve avere un riferimento alla class library, in modo che le dipendenze possano essere risolte.
Il Program.cs diventa:
builder.Services.Scan(selector => selector
.FromAssemblyOf<ICityService>()
.AddClasses(classSelector =>
classSelector.AssignableTo<ICityService>())
.AsMatchingInterface());In questo modo stiamo indicando a Scrutor che dovrà effettuare lo scan all’interno dell’assembly in cui è definita ICityService. A questo punto, analizzando tutte le implementazioni presenti all’interno dell’assembly, selezionaniamo solo quelle assegnabili a ICityService. Indichiamo quindi a Scrutor di effettuare la registrazione di tutte le implementazioni selezionate sulle interfacce che corrispondono al nome della classe, chiamando il metodo AsMatchingInterface().