Почему не найдено подходящего метода для переопределения?

#asp.net-core #asp.net-core-webapi #background-service

Вопрос:

Я пишу фоновую службу в .NET Core, и в моем ExecuteAsync методе я получаю эту ошибку:

ОШИБКА: «Выведена обратная печать.ExecuteAsync(CancellationToken)’: не найдено подходящего метода для переопределения
BackgroundTask.Демо

Вот мой класс:

 namespace BackGroundTask.Demo
{
    public class DerivedBackGroundPrinted : Backgroundservice
    {
        private readonly IWroker worker;

        public DerivedBackGroundPrinted(IWroker worker)
        {
            this.worker = worker;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            await worker.DoWOrk(stoppingToken);
        }
    }
}
 

Мой Backgroundservice класс:

 namespace BackGroundTask.Demo
{
    public class Backgroundservice
    {
    }
}
 

Комментарии:

1. Похоже, он ожидает метод Demo() в классе BackgroundTask. Вы пробовали дать ему то, чего он ожидает?

2. В вашем локальном фоновом сервисе есть элемент, который нужно переопределить. Скорее всего, вы ищете Microsoft. Расширения. Принимающий. BackgroundService и ваш производный класс используют класс, определенный в одном и том же пространстве имен. Либо удалите локальный класс, либо используйте явное пространство имен встроенной фоновой службы платформы

Ответ №1:

Ваш локальный фоновый сервис

 namespace BackGroundTask.Demo
{
    public class Backgroundservice
    {
        // No members have been defined within the class
    }
}
 

нужно ли переопределять этот элемент, чтобы сообщение об ошибке было точным. Возможно, ваш локальный класс был автоматически создан по ошибке.

Скорее всего, вы ищете Microsoft.Расширения.Принимающий.BackgroundService и ваш производный класс используют класс, определенный в одном и том же пространстве имен.

Либо удалите локальный класс и добавьте using пространство имен

 namespace BackGroundTask.Demo
{
    using Microsoft.Extensions.Hosting;

    public class DerivedBackGroundPrinted : BackgroundService
    {
        private readonly IWroker worker;
        public DerivedBackGroundPrinted(IWroker worker)
        {
            this.worker = worker;
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            await worker.DoWOrk(stoppingToken);
        }
    }
}
 

или используйте явное пространство имен встроенной фоновой службы платформы

 namespace BackGroundTask.Demo
{
    public class DerivedBackGroundPrinted : Microsoft.Extensions.Hosting.BackgroundService
    {
        private readonly IWroker worker;
        public DerivedBackGroundPrinted(IWroker worker)
        {
            this.worker = worker;
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            await worker.DoWOrk(stoppingToken);
        }
    }
}