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, StorageModel
der unsere interne Darstellung von a ist Storage
.
Was würden Sie im Mapper zurückgeben: Storage
oder StorageModel
? Wir haben einen DataService, StorageService
der 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
Storage
Objekt und der interne das interneStorageService
zurückgibtStorageModel
? - Oder würden Sie bereits eine
StorageModel
in der Verpackung zurückgeben?