我想在我的天蓝网络作业中使用依赖注入。为此,我必须将类和方法设为非静态:
public class Functions
{
[NoAutomaticTrigger]
public async Task GetDriversAsync(TextWriter logger)
{
}
[NoAutomaticTrigger]
public void Test()
{
}
}
然后我想把它传递给JobHost对象的Call方法。
我尝试这样做:
class Program
{
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
var host = new JobHost(config);
Functions f = new Functions();
host.Call(((Action)f.Test).Method);
host.Call(((Action)f.GetDriversAsync).Method);
}
}
使用同步方法,它可以正常工作((Action)f.GetDriversAsync).Method
我收到编译错误:
无法将'method'类型转换为'Action'
如何正确写出该行?
答案 0 :(得分:1)
使用普通的同步方法。
如果查看source code,您会发现主机异步调用这些方法。或者您可以致电CallAsync
等待任务。
如果我找到了正确的executor,您不必担心以async / await方式调用您的方法。
因此,不要将您的方法强制转换为Action。取而代之的是,
host.Call(typeof(Functions).GetMethod("GetDriversAsync"));