gpt4 book ai didi

C# IOptions 无法将我的对象隐式转换为接口(interface)以将其注入(inject)我的服务 AddSingleton

转载 作者:行者123 更新时间:2023-12-02 16:34:22 25 4
gpt4 key购买 nike

我正在学习如何将 MongoDB 与 C# ASP.NET 一起使用,并且我一直在遵循 Microsoft 关于使用 MongoDB 的指南 Mongo Doc Guide .我已经进入添加配置模型部分的第 3 步,我正在尝试在服务单例中注入(inject)我的配置接口(interface),以便它像指南中所说的那样解析我的配置模型的实例。我使用与指南完全相同的代码来处理我的对象,尽管它不断抛出一个错误,指出 Cannot implicitly convert type 'Models.UserDBSettings' to 'Models.IUserDBSettings'。存在显式转换(是否缺少强制转换?)。所以我想知道如何解决这个问题?感谢您的提前帮助

这是我的代码:

启动.cs

public void ConfigureServices(IServiceCollection services)
{
services.Configure<UserDBSettings>(
Configuration.GetSection(nameof(UserDBSettings)));

services.AddSingleton<IUserDBSettings>(sp =>
sp.GetRequiredService<IOptions<UserDBSettings>>().Value);
// the line above throws the error and matches this line of code in the guide services.AddSingleton<IBookstoreDatabaseSettings>(sp =>
sp.GetRequiredService<IOptions<BookstoreDatabaseSettings>>().Value);

services.AddScoped<UserRepository>();

services.AddControllers();
}

用户数据库设置

    public class UserDBSettings
{
public string UserCollectionName { get; set; }
public string ConnectionString { get; set; }
public string DataBaseName { get; set; }
}

public interface IUserDBSettings
{
string UserCollectionName { get; set; }
string ConnectionString { get; set; }
string DataBaseName { get; set; }
}

然后我的应用设置包含连接信息:

{
"UserDBSettings": {
"UserCollection": "Users",
"ConnectionString": "mongodb://connectionAdresss",
"DatabaseName": "DBName"
},

最佳答案

DI 容器要求您注册的服务类实际实现接口(interface)。

public class UserDBSettings : IUserDBSettings
{
public string UserCollectionName { get; set; }
public string ConnectionString { get; set; }
public string DataBaseName { get; set; }
}

关于C# IOptions 无法将我的对象隐式转换为接口(interface)以将其注入(inject)我的服务 AddSingleton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62984746/

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