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 StorageModelque es nuestra representación interna de a Storage.
¿Qué devolverías en el mapeador: Storageo StorageModel? Tenemos un DataService StorageServiceque 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
Storageobjeto externo y el internoStorageServicedevuelve el internoStorageModel? - ¿O ya devolverías un
StorageModelenvoltorio?