This commit is contained in:
CortexCore
2023-08-11 23:57:37 +08:00
parent 936a94c84b
commit 75889ec34f
149 changed files with 6524 additions and 1043 deletions

View File

@@ -0,0 +1,42 @@
using System.Runtime.CompilerServices;
namespace BITKit{
/// <summary>
/// 主要加工器,用于多个加工器顺序加工
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IMainProcessor<T>
{
void AddProcessor(IProcessor<T> processor);
void RemoveProcessor(IProcessor<T> processor);
T Process(T source);
}
/// <summary>
/// 加工器,用于加工数据 <see cref="MainProcessor{T}"/> 会调用 <see cref="IProcessor{T}.Process"/> 方法
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IProcessor<T>
{
T Process(T source, T current);
}
/// <summary>
/// 带参数的加工集合器,用于多个加工器顺序加工
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="T0"></typeparam>
public interface IMainProcessor<T, T0>
{
void AddProcessor(IProcessor<T, T0> processor);
void RemoveProcessor(IProcessor<T, T0> processor);
T Process(T source, T0 arg);
}
/// <summary>
/// 带参数的加工器,用于加工数据 <see cref="MainProcessor{T,T0}"/> 会调用 <see cref="IProcessor{T,T0}.Process"/> 方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="T0"></typeparam>
public interface IProcessor<T, in T0>
{
T Process(T source, T current, T0 arg);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a0f903f9947de3b4090905d782b56a41
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,39 @@
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));
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: df874eb2d37ad7b4b97b65c9150fae1c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: