1
This commit is contained in:
42
Packages/Runtime~/Core/Processor/IProcessor.cs
Normal file
42
Packages/Runtime~/Core/Processor/IProcessor.cs
Normal 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);
|
||||
}
|
||||
}
|
11
Packages/Runtime~/Core/Processor/IProcessor.cs.meta
Normal file
11
Packages/Runtime~/Core/Processor/IProcessor.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a0f903f9947de3b4090905d782b56a41
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
39
Packages/Runtime~/Core/Processor/Processor.cs
Normal file
39
Packages/Runtime~/Core/Processor/Processor.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
11
Packages/Runtime~/Core/Processor/Processor.cs.meta
Normal file
11
Packages/Runtime~/Core/Processor/Processor.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df874eb2d37ad7b4b97b65c9150fae1c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user