39 lines
1.1 KiB
C#
39 lines
1.1 KiB
C#
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Security.Permissions;
|
||
|
|
||
|
namespace BITKit
|
||
|
{
|
||
|
|
||
|
public class MainProcessor<T> : IMainProcessor<T>
|
||
|
{
|
||
|
private readonly List<IProcessor<T>> _processors = new();
|
||
|
public void AddProcessor(IProcessor<T> processor) => _processors.Add(processor);
|
||
|
public void RemoveProcessor(IProcessor<T> processor) => _processors.Remove(processor);
|
||
|
|
||
|
public T Process(T source)
|
||
|
{
|
||
|
return _processors.Aggregate(source, (current1, processor) => processor.Process(source, current1));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class Processor<T> : IProcessor<T>
|
||
|
{
|
||
|
public T Process(T source, T current)
|
||
|
{
|
||
|
return current;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class MainProcessor<T, T1> : IMainProcessor<T, T1>
|
||
|
{
|
||
|
private readonly List<IProcessor<T, T1>> _processors = new();
|
||
|
public void AddProcessor(IProcessor<T, T1> processor) => _processors.Add(processor);
|
||
|
public void RemoveProcessor(IProcessor<T, T1> processor) => _processors.Remove(processor);
|
||
|
|
||
|
public T Process(T source, T1 arg)
|
||
|
{
|
||
|
return _processors.Aggregate(source, (current, processor) => processor.Process(source, current, arg));
|
||
|
}
|
||
|
}
|
||
|
}
|