Abbiamo una dipendenza da un servizio di terze parti che espone una gigantesca interfaccia di cui abbiamo bisogno solo di 3 metodi. Inoltre, l'interfaccia cambia frequentemente ...
Ho deciso di racchiudere l'interfaccia in una classe nel nostro progetto ed esporre solo i metodi di cui abbiamo bisogno.
Ma non sono sicuro di come dovrei gestire i valori di ritorno ... L'interfaccia restituisce un oggetto di tipo Storage. Internamente abbiamo un tipo StorageModelche è la nostra rappresentazione interna di a Storage.
Cosa vorresti restituire nel mapper: Storageo StorageModel? Abbiamo un DataService StorageServiceche ottiene una dipendenza del wrapper iniettato.
Attualmente lo sto facendo sostanzialmente così:
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);
}
}
}
Cosa vorresti dire:
- È buono come sopra, che il wrapper restituisca l'
Storageoggetto esterno e quello internoStorageServicerestituisca quello internoStorageModel? - O restituiresti già un
StorageModelnell'involucro?