Abbiamo una dipendenza da un servizio di terze parti che espone un'interfaccia gigantesca di cui abbiamo solo bisogno come 3 metodi. Inoltre, l'interfaccia cambia frequentemente ...
Ho deciso di avvolgere l'interfaccia in una classe del nostro progetto e di esporre solo i metodi di cui abbiamo bisogno.
Ma non sono sicuro di come gestire i valori di ritorno ...
L'interfaccia restituisce un oggetto di tipo Storage
. Abbiamo internamente un tipo StorageModel
che è la nostra rappresentazione interna di Storage
.
Cosa vorresti restituire nel mapper: Storage
o StorageModel
?
Abbiamo un DataService StorageService
che ottiene una dipendenza dal wrapper iniettato.
Attualmente lo faccio fondamentalmente in questo modo:
public class StorageService
{
private readonly IExternalStorageWrapper externalStorageWrapper;
public StorageService(IExternalStorageWrapper externalStorageWrapper)
{
this.externalStorageWrapper = externalStorageWrapper;
}
public StorageModel GetStorage(int storageId)
{
return this.externalStorageWrapper.GetStorage(storageId).ConvertToStorageModel();
}
}
public class ExternalStorageWrapper : IExternalStorageWrapper
{
public Storage GetStorage(int storageId)
{
using(var ext = new ExternalStorage())
{
return ext.GetStorage(storageId);
}
}
}
Che cosa diresti:
- È buono come sopra, che il wrapper restituisca l'oggetto
Storage
esterno e il% interno interno di co_de restituisca il% interno% di co_de? - Oppure restituiresti già
StorageService
nel wrapper?