【发布时间】:2020-10-07 09:50:57
【问题描述】:
所以我创建了以下 MongoDBService:
public class MongoDBService
{
private const String CONNECTION_STRING = "mongodb://localhost:27017";
private const String DATABASE_NAME = "TestingTesting";
private readonly MongoClient _Client;
public MongoDBService()
{
_Client = new MongoClient(CONNECTION_STRING);
}
public IMongoCollection<T> GetCollection<T>()
{
return _Client.GetDatabase(DATABASE_NAME).GetCollection<T>(typeof(T).Name);
}
}
我已在我的 asp.net core Startup.cs 中将 MongoDBService 设置为服务:
services.AddSingleton<MongoDBService>();
然后我尝试通过将服务注入 .razor 页面来使用该服务:
@inject Project.Services.MongoDBService
我也在启动我的 MongoDBService 实例:
Project.Services.MongoDBService mongo = new Services.MongoDBService();
但是当我尝试使用它时,我在 FindAsync() 方法下得到一条红色波浪线:
async Task GetAllClocks()
{
MongoDB.Driver.FilterDefinition<Project.Data.Clock> filter = MongoDB.Driver.Builders<Project.Data.Clock>.Filter.Empty;
MongoDB.Driver.IMongoCollection<Project.Data.Clock> cursor = await mongo.GetCollection<Project.Data.Clock>().FindAsync(filter);
}
错误是:
CS0411:无法从用法推断方法“IMongoCollection.FindAsync(FilterDefinition, FindOptions
, CancellationToken)”的类型参数。尝试指定类型
我已经在谷歌上搜索了一段时间,虽然听起来我要让编译器决定使用什么类型,但我确定我明确指定了 Project.Data.Clock 类型。绝对难倒。有什么想法吗?
【问题讨论】:
-
猜测:FindOptions 需要两个类型参数,而您只提供一个。如果你想返回一个时钟对象,试试 FindOptions
. -
嘿 Ricardo,你说得对,我创建了新的 FindOptions 实例并将其作为参数传递给 FindAsync 方法。奇怪的是我以前从来没有这样做过,这是我第一次遇到这个错误。
标签: c# asp.net-core blazor