我想在我的代码中使用新的开关,对于方法结果 make log 并 return IActionResult。
我尝试做这样的事情:
var response = (this._coreRepository.Write(value.Content, data.Id.ToString())); \\return bool
return response switch
{
true => () =>
{
this._log.LogInformation("Write is complited");
return Ok();
},
false => () =>
{
this._log.LogInformation("Error in writing");
return BadRequest();
},
_ => () =>
{
throw new Exception("Unexpected error");
}
};
Run Code Online (Sandbox Code Playgroud)
但编译器对我说cannot convert lambda expression to type 'IActionResult' because it is not a delegate type。
我该如何修复它?
我有一个范围服务(让它成为UserContext包含用户IP的服务)。它服务我尝试注入另一个服务(让我们称它们为ProfileManager和LogerProvider)。
在启动时的控制器中,我像这样添加了它们:
service
.AddTransient(ILogerProvider, LogerProvider)()
.AddSingleton<IProfileManager, ProfileManager)()
.AddScoped<IUserContext, UserContext>()
Run Code Online (Sandbox Code Playgroud)
类LogerProvider包含UserContext注入:
class LogerProvider: ILogerProvider
{
private readonly IUserContext _userContext;
public LogerProvider(IUserContext userContext)
{
_userContext = userContext;
}
}
Run Code Online (Sandbox Code Playgroud)
类ProfileManager包含LogerProvider注入:
class ProfileManager: IProfileManager
{
private readonly ILogerProvider _logerProvider;
public ProfileManager(ILogerProvider logerProvider)
{
_logerProvider = logerProvider;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行我的程序时,出现错误:
(Inner Exception #1) System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: IProfileManager Lifetime: Singleton ImplementationType: IProfileManager': Cannot consume scoped service …Run Code Online (Sandbox Code Playgroud)