BITKit/Src/Core/Processor/Processor.cs

39 lines
1.1 KiB
C#
Raw Normal View History

2023-08-11 23:57:37 +08:00
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));
}
}
}