作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习如何将 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/
我是一名优秀的程序员,十分优秀!