Wir sind von einem Drittanbieter abhängig, der eine gigantische Schnittstelle bereitstellt, für die wir nur drei Methoden benötigen. Außerdem ändert sich die Benutzeroberfläche häufig ...
Ich habe beschlossen, die Schnittstelle in eine Klasse in unserem Projekt einzuschließen und nur die Methoden bereitzustellen, die wir benötigen.
Ich bin mir jedoch nicht sicher, wie ich mit den Rückgabewerten umgehen soll ... Die Schnittstelle gibt ein Objekt vom Typ zurück Storage. Wir haben intern einen Typ, StorageModelder unsere interne Darstellung von a ist Storage.
Was würden Sie im Mapper zurückgeben: Storageoder StorageModel? Wir haben einen DataService, StorageServiceder eine Abhängigkeit des injizierten Wrappers erhält.
Momentan mache ich es im Grunde so:
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);
}
}
}
Was würdest du sagen:
- Ist es gut wie oben, dass der Wrapper das externe
StorageObjekt und der interne das interneStorageServicezurückgibtStorageModel? - Oder würden Sie bereits eine
StorageModelin der Verpackung zurückgeben?