独立したスケジューラ クラスを実装するには、次のインターフェイスに到達する必要がありました。
public interface ISchedulableContext<in T1, out T2> where T1: T2, ISchedulerConfigProvider
{
void LogMessage(LoggingEventLevel level, string eventName, string Message);
void Process(ISchedulerConfigProvider schedulerConfig);
IEnumerable<T2> GetSchedulerConfig();
void SaveUpdatedConfig(IEnumerable<T1> schedulers);
}
機能しますが、タイプ ISchedulableContext<ISchedulerConfigProvider,ISchedulerConfigProvider> を明示的かつ冗長に指定して渡す必要があります
public class SchedulableCore: ISchedulableContext<ISchedulerConfigProvider,ISchedulerConfigProvider>
{
...
}
public class TaskScheduler
{
private ISchedulableContext<ISchedulerConfigProvider, ISchedulerConfigProvider> core;
public TaskScheduler(ISchedulableContext<ISchedulerConfigProvider, ISchedulerConfigProvider> core)
{
this.core = core;
}
}
この実現を簡素化し、代わりに実装する単純なインターフェイスを使用したいと思います。
public class SchedulableCore: ISchedulableContext
{
/*...*/
public IEnumerable<ISchedulerConfigProvider> GetSchedulerConfig()
{
return (IEnumerable<ISchedulerConfigProvider>)/*...*/;
}
public void SaveUpdatedConfig(IEnumerable<ISchedulerConfigProvider> schedulers)
{ /*...*/ }
}
単純化することは可能ですか?