Далее у меня есть рабочий класс и есть foreach.
Внутри forach есть вызов службы, который может быть GetX (), GetY () ...
в качестве реализации, мне нужно повторно инициализировать клиент Api на основе параметра, есть ли шаблон, чтобы избежать _aService.SetApiClient (p) Line?
public class Worker
{
private readonly IAService _aService;
public Worker(IAService entryPointService)
{
_aService = entryPointService;
}
protected void ExecuteAsync()
{
while (true)
{
new List<string>() { "x", "y", "z" }.ForEach(p =>
{
_aService.SetApiClient(p);
_aService.GetX();
// OR _aService.GetY(),_aService.GetYZ();//
});
}
}
}
public class AService : IAService
{
private GoogleApiClient _googleApiClient;
public AService(GoogleApiClient apiClient)
{
_googleApiClient = apiClient;
}
public void SetApiClient(string param)
{
_googleApiClient = new GoogleApiClient(new AuthProvider (param));
}
public string GetX()
{
return _googleApiClient.CallX();
}
}
public interface IAService
{
void SetApiClient(string param);
string GetX();
}
public interface IGoogleApiClient
{
string CallX();
string CallY();
string CallZ();
}
public class GoogleApiClient : IGoogleApiClient
{
private AuthProvider _param;
public GoogleApiClient(AuthProvider param)
{
_param = param;
}
public string CallX()
{
return DoSomeCal("X", _param);
}
public string CallY()
{
return DoSomeCal("Y", _param);
}
public string CallZ()
{
return DoSomeCal("Z", _param)
}
}
обратите внимание, что значения списка строк могут быть любыми