ошибка CS0118: «Счет» является пространством имен, но используется как тип

#c# #.net

Вопрос:

 namespace Vectigal.Invoice.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class InvoicesController : ControllerBase
    {
        private readonly InvoiceContext _context;

        public InvoicesController(InvoiceContext context)
        {
            _context = context;
        }

        // GET: api/Invoices
        [HttpGet]
        public async Task<ActionResult<IEnumerable<Invoice>>> GetInvoices()
        {
            return await _context.Invoices.ToListAsync();
        }
 

Я получаю сообщение об ошибке, когда пытаюсь запустить этот проект dotnet.
Что я делаю не так?

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

1. Когда вы задаете подобный вопрос, пожалуйста, укажите, в какой строке есть ошибка (если дважды щелкнуть по ошибке, VS перейдет к нарушающей строке). Таким образом, люди смогут быстро найти проблему без необходимости компилировать ваш код у себя в голове.

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

Ответ №1:

Это связано Invoice с тем, что это пространство имен ( Vectigal.Invoice ), а не тип — именно то, о чем говорится в ошибке.

IEnumerable<Invoice> является уродливым. Вы объявили что-то еще, называемое Invoice где-то в другом месте? Если это так, либо измените его имя, либо измените имя пространства имен, чтобы они не сталкивались. Не называйте две разные вещи одним и тем же именем.

Вы всегда можете полностью указать имя, в качестве альтернативы, т. Е. : IEnumerable<SomeOtherNamespace.Invoice> , но это становится немного многословным.