У нас есть зависимость от стороннего сервиса, который предоставляет гигантский интерфейс, который нам нужен только как 3 метода. Кроме того, интерфейс часто меняется ...
Я решил обернуть интерфейс в класс в нашем проекте и раскрыть только те методы, которые нам нужны.
Но я не уверен, как я должен обрабатывать возвращаемые значения ... Интерфейс возвращает объект типа Storage. У нас внутри есть тип, StorageModelкоторый является нашим внутренним представлением Storage.
Что бы вы вернули в картограф: Storageили StorageModel? У нас есть DataService, StorageServiceкоторый получает зависимость от вложенной оболочки.
В настоящее время я делаю это в основном так:
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);
}
}
}
Что бы вы сказали:
- Это хорошо, как и выше, что оболочка возвращает внешний
Storageобъект, а внутреннийStorageServiceвозвращает внутреннийStorageModel? - Или вы бы вернули
StorageModelв обертке уже?