Mam więc następujące MongodniService, które stworzyłem:

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);
    }
}

Ustawiłem MongodBservice jako usługę w moim startowaniu rdzenia asp.net:

services.AddSingleton<MongoDBService>();

Próbuję użyć usługi, wstrzykuje go na stronę .Razor:

@inject Project.Services.MongoDBService

Inicjuję również instancję moich mongodbservice:

Project.Services.MongoDBService mongo = new Services.MongoDBService();

Ale kiedy spróbuję go użyć, otrzymuję czerwoną linię Squiggly w metodzie 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);
}

Błąd:

CS0411: Typ argumenty dla metody "IMONGOCOLCECTELINE Spróbuj określić typ

Byłem przez jakiś czas i chociaż brzmi jak wychodzę z kompilatora, aby zdecydować, jaki rodzaj użycia, jestem pewien, że wyraźnie określam typ projektu.data.clock. Absolutnie zakłopotany. Jakieś pomysły?

2
Izacch 7 październik 2020, 12:50

1 odpowiedź

Najlepsza odpowiedź

FindOptions Potrzebuje dwóch parametrów typu i dostarczasz tylko jeden. Jeśli chcesz zwrócić obiekt Clock, spróbuj FindOptions<Clock, Clock>.

2
Ricardo Peres 7 październik 2020, 10:29