C# 操作/功能的通用列表

C# 操作/功能的通用列表,c#,generics,scheduler,C#,Generics,Scheduler,我想知道是否可以创建一些操作/函数的通用列表,每个操作/函数都有不同的in/out参数 我之所以需要这样做,是因为我有一个执行器,他的工作是从API获取数据,该执行器中的每个方法都指向该API中的不同路径,我希望能够调度这些请求,这样我就不会过载该API(如果我通过了请求阈值,它们只会阻止我) 因此,每次调用该executer中的方法时,我都会将该方法及其参数添加到一个列表中,另一个线程将在该列表上运行,并使用一些超时从那里执行方法 我必须在执行器中有这个逻辑,而不是从它的调用者那里 所以我想知

我想知道是否可以创建一些操作/函数的通用列表,每个操作/函数都有不同的in/out参数

我之所以需要这样做,是因为我有一个执行器,他的工作是从API获取数据,该执行器中的每个方法都指向该API中的不同路径,我希望能够调度这些请求,这样我就不会过载该API(如果我通过了请求阈值,它们只会阻止我)

因此,每次调用该executer中的方法时,我都会将该方法及其参数添加到一个列表中,另一个线程将在该列表上运行,并使用一些超时从那里执行方法

我必须在执行器中有这个逻辑,而不是从它的调用者那里

所以我想知道我是否可以做一些事情,比如:

List<Func<T,T>> scheduler;
Func<List<object>, object> scheduler
列表调度器;
不在创建时声明类型,而是在运行时添加不同的类型

如果有更好的解决方案或模式,请告诉我

[编辑] 显然,我不想实现以下内容:

List<Func<T,T>> scheduler;
Func<List<object>, object> scheduler
Func调度程序

如果您在将func添加到列表时知道参数值,您可以简单地在lambda中捕获它们,该lambda应用
func
,从而将其减少为
func,
,例如

Func<T, X> funcToAdd = ...
Func<T> wrapper = () => funcToAdd(valueForX);
myFuncList.Add(wrapper);
Func funcToAdd=。。。
Func wrapper=()=>funcToAdd(valueForX);
添加(包装器);
功能列表的类型可以是
list

您可以制作一个
列表来存储您的功能

以下代码运行良好:

var scheduler = new List<Tuple<Type, Delegate>>();

scheduler.Add(
    Tuple.Create<Type, Delegate>(
        typeof(Func<int, int>),
        (Func<int, int>)(n => n + 1)));

scheduler.Add(
    Tuple.Create<Type, Delegate>(
        typeof(Func<string, string, int>),
        (Func<string, string, int>)((x, y) => x.Length + y.Length)));
var调度器=新列表();
调度程序。添加(
Tuple.Create(
类型(Func),
(Func)(n=>n+1));
调度程序。添加(
Tuple.Create(
类型(Func),
(Func)((x,y)=>x.Length+y.Length));
然后,您需要使用反射将他们从
代理
中带回来


这将是一个很好的起点。

这个问题有用吗?参数值从何而来?如果它们在您想要安排函数时可用,只需执行一个
列表
。列表的声明是什么样子的?我不能保留它的列表,我必须指定一个类型。你想对返回值做什么?如果funcs可以返回任何东西,那么除了
Func
AFAICT之外,您做得再好不过了