gpt4 book ai didi

c# - 如何将动态类型的 Action 传递给方法

转载 作者:行者123 更新时间:2023-11-30 21:50:27 25 4
gpt4 key购买 nike

我有一个接受 Action<T> 的 3d 聚会作业执行库 (hangfire) :

Add(Action<T> action);

我可以很容易地调用类似的东西:

Add((MyJob job) => job.Run());

但我想通过反射动态加载作业,所以我有一个可以使用的类名“MyNamespace.MyJob”。我不知道如何通过反射创建所需的参数。

附言该类实现了 IJob,但不幸的是我不能使用 Action<IJob> ,因为 hangfire 稍后将使用该参数从 DI 容器中解析。

最佳答案

看起来 Hangfire 使用类型参数要求 DI 容器提供一个值。这就是委托(delegate)实际上需要具有正确类型的原因。使用 Action<object>行不通。

static void AddToHangfire<T>() where T : ICommand {
Add((T job) => job.Run());
}

现在您需要使用反射来调用该方法。您可以使用 MethodInfo.MakeGenericMethodMethodInfo.Invoke这样做。

关于c# - 如何将动态类型的 Action<T> 传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36333358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com