Tenemos una dependencia a un servicio de terceros que expone una interfaz gigantesca de la que solo necesitamos como 3 métodos. Además, la interfaz cambia con frecuencia ...
He decidido incluir la interfaz en una clase en nuestro proyecto y solo exponer los métodos que necesitamos.
Pero no estoy seguro de cómo debo manejar los valores de retorno ... La interfaz devuelve un objeto de tipo Storage
. Internamente tenemos un tipo StorageModel
que es nuestra representación interna de a Storage
.
¿Qué devolverías en el mapeador: Storage
o StorageModel
? Tenemos un DataService StorageService
que obtiene una dependencia del contenedor inyectado.
Actualmente lo estoy haciendo básicamente así:
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);
}
}
}
Qué dirías:
- ¿Es bueno como el anterior, que el contenedor devuelve el
Storage
objeto externo y el internoStorageService
devuelve el internoStorageModel
? - ¿O ya devolverías un
StorageModel
envoltorio?