c# - c#依赖注入无法将lambda转换为预期的委托
问题描述
无法将 lambda 转换为预期的委托,因为块中的某些返回类型未隐式转换为委托返回类型。
无 DI
var chromeDriverService = ChromeDriverService.CreateDefaultService();
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments(new List<string>() { "headless" });
ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions);
在 Startup.cs 中使用 DI
services.AddScoped<ChromeDriverService>((serviceProvider =>
{
return ChromeDriverService.CreateDefaultService();
}));
//**** errors here*****
services.AddScoped<ChromeOptions>((serviceProvider =>
{ return new ChromeOptions().AddArguments(new List<string>() { "headless" }); }));
// errors here******
// how would i pass the driver service & options
services.AddScoped<ChromeDriver>(
(serviceProvider =>
{
return new ChromeDriver(chromeDriverService,chromeOptions);
}));
我如何使它可以转换并将正确的选项传递给 chromeDriver ?
解决方案
您在这一行中有一个问题:
services.AddScoped<ChromeOptions>((serviceProvider =>
{ return new ChromeOptions().AddArguments(new List<string>() { "headless" }); }));
AddScoped
输入委托在返回ChromeOptions
时.AddArguments
返回除外void
怎么样:
services.AddScoped<ChromeOptions>((serviceProvider =>
{
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments(new List<string>() {"headless"});
return chromeOptions; // Return expected type
});
services.AddScoped<ChromeDriver>((s =>
{
return new ChromeDriver(s.GetService<ChromeDriverService>(),
s.GetService<ChromeOptions>());
}));
推荐阅读
- android - 模块是使用不兼容的 Kotlin 版本编译的。**其元数据的二进制版本为 1.5.1,预期版本为 1.1.15**
- google-apps-script - Google Data Studio 社区连接器:在应用脚本中访问 URL 参数
- java - 为什么不读取 JSON 文件?
- express - express、socket io、会话共享
- linux - 如何使用devilspie2在一个工作区打开一个窗口然后停止它?
- python - 在分组数据框的两列上移动滚动移动平均值
- python - Micropython 电报机器人仅轮询聊天记录中的第一条消息
- numpy - 具有自定义过滤的数组的 numpy 数组
- python-3.x - 更新时自动更新时间戳
- python - 带有 Newtonsoft 的 ac# 类中的 Python 序列化 JSON