Es geht darum.
Ich habe einige klassen wo vorher Services aufgelöst werden muss.
Damit ich kein Duplicate Code habe (DRY) habe ich diese Auflösungen in einer Separaten Klasse.
public class BlaBase
{
public ApiCallerBase(Window owner)
{
WindowService = ServiceLocator.ResolveService<IWindowService>();
DialogService = ServiceLocator.ResolveService<IDialogService>();
ServerService = ServiceLocator.ResolveService<IServerService>();
LogService = ServiceLocator.ResolveService<ILogService>();
PleaseWaitService = ServiceLocator.ResolveService<IPleaseWaitService>();
IThreadService threadService = ServiceLocator.ResolveService<IThreadService>();
ThreadQueue = threadService.ResolveThreadQueue(owner);
}
protected IWindowService WindowService { get; set; }
protected IDialogService DialogService { get; set; }
protected IServerService ServerService { get; set; }
protected ILogService LogService { get; set; }
protected IPleaseWaitService PleaseWaitService { get; set; }
protected ThreadQueue ThreadQueue { get; set; }
}
Die Benutzende Klasse erbt davon und kann dann die Services direkt verwenden:
public class Foo : BlaBase
{
public void OnDo()
{
WindowService.ShowDialog(...);
}
}
public class Bar : BlaBase
{
public void OnDo()
{
WindowService.ShowDialog(...);
}
}
Nun frage ich mich aber wie es sich mit FCoI hier verhält.
Mein Gefühl sagt mir, da die Basisklasse keine weiteren Aktionen ausführt ist eine Ableitung legitim.
Ich könnte die Klasse aber nach "ServiceHelper" oder so umbenennen und in allen Klassen als Privates Feld halten und verwenden.
Was meint ihr? Trübt mich mein Gefühl?
LG
CSL
//Tags vergessen