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 StorageModelqui est notre représentation interne d'un Storage.
Que voudriez-vous retourner dans le mappeur: Storageou StorageModel? Nous avons un DataService StorageServicequi 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'
Storageobjet externe et que le interneStorageServicerenvoie le interneStorageModel? - Ou retourneriez-vous déjà un
StorageModeldans l'emballage?