Nous sommes dépendants d'un service tiers qui expose une interface gigantesque dont nous n'avons besoin que de 3 méthodes. De plus, l'interface change fréquemment ...
J'ai décidé d'envelopper l'interface dans une classe de notre projet et d'exposer uniquement les méthodes dont nous avons besoin.
Mais je ne sais pas comment je dois gérer les valeurs de retour ... L'interface renvoie un objet de type Storage
. Nous avons en interne un type StorageModel
qui est notre représentation interne d'un Storage
.
Que voudriez-vous retourner dans le mappeur: Storage
ou StorageModel
? Nous avons un DataService StorageService
qui obtient une dépendance du wrapper injecté.
Actuellement, je le fais essentiellement comme ceci:
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);
}
}
}
Que dirais-tu:
- Est-ce bien comme ci-dessus, que le wrapper retourne l'
Storage
objet externe et que le interneStorageService
renvoie le interneStorageModel
? - Ou retourneriez-vous déjà un
StorageModel
dans l'emballage?