Temos uma dependência de um serviço de terceiros que expõe uma interface gigantesca da qual precisamos apenas de três métodos. Além disso, a interface muda frequentemente ...
Decidi agrupar a interface em uma classe em nosso projeto e apenas expor os métodos que precisamos.
Mas não tenho certeza de como devo lidar com os valores retornados ... A interface retorna um objeto do tipo Storage
. Internamente, temos um tipo StorageModel
que é nossa representação interna de a Storage
.
O que você retornaria no mapeador: Storage
ou StorageModel
? Temos um DataService StorageService
que obtém uma dependência do wrapper injetado.
Atualmente eu estou fazendo isso basicamente assim:
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);
}
}
}
O que você diria:
- É bom como acima, que o wrapper retorne o
Storage
objeto externo e o internoStorageService
retorne o internoStorageModel
? - Ou você já retornaria um
StorageModel
no invólucro?