c# 依赖注入(inject)无法将 lambda 转换为预期的委托(delegate)

标签 c# asp.net-core lambda dependency-injection

无法将 lambda 转换为预期委托(delegate),因为 block 中的某些返回类型未隐式转换为委托(delegate)返回类型。

没有 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 输入委托(delegate)会返回 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>());
}));

关于c# 依赖注入(inject)无法将 lambda 转换为预期的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51509724/

相关文章:

c# - 插入 ASPNET CORE 时出现错误重复信息

.net - 将 WCF 绑定(bind)从 ASP.NET 迁移到 ASP.NET Core 完整框架

python - 迭代 Pandas 中的行并在两列相等时应用函数

c# - 如何在 C# 中使用 lambda 表达式使用数组进行比较

c# - 将用户控件打印到 A4 页面的中心

c# - 如何使用c#读取二进制文件?

c# - 使用 MVVM 的嵌套动态内容控件

具有 Azure SingnalR 的 Azure Web 应用程序 - 专用终结点将 wss 更改为 https 并引发 CORS 错误

c++ - Lambda 与手动内联代码更改 GCC 的优化器行为

c# - 如何为更新和保存配置 NHIbernate 事件监听器?