В чем причина всех проблем в этом классе? - PullRequest
0 голосов
/ 02 ноября 2019

Я следовал учебному пособию по ASP.NET Core и писал свой собственный код, когда столкнулся с неизвестной проблемой, которая вызывает много ошибок. Я знаю, что парень из учебника работает на ASP.NET Core 2.2.4, а на ASP.NET Core 2.2.6.

Ошибка в контроллере. Вот класс:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

using Domain;
using Persistance;


namespace API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // With access to the Database Context, this controller can talk to the Database,
        // reading and updating values.
        private readonly DatabaseContext _DbContext;


        // CONSTRUCTOR INJECTION: Injecting the DatabaseContext service into the Values
        // class.
        public ValuesController(DatabaseContext dbContext)
        {
            this._DbContext = dbContext;
        }


        // GET api/values
        // This is made an Async method to push a task into a second thread: the act
        // of calling the database and retrieving the query results. By doing this, you
        // avoid blocking the main thread. 
        [HttpGet]
        public async Task<ActionResult<IEnumerable<Value>>> Get()
        {
            // Retrieve a List of values from the 'Values' table. 
            var listOfValues = await _DbContext.Values.ToListAsync();
            // Return HTTP Status Code 200, along with the retrieved list of values. 
            return Ok(listOfValues);
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public async Task<ActionResult<Value>> Get(int id)
        {
            // There are several methods to help you get values from databases 
            // asynchronously: FindAsync(), FirstOrDefaultAsync(), SingleAsync(), and 
            // SingleOrDefaultAsync(). FindAsync() is used here because it is the most
            // appropriate - it will search the database by primary key and return the
            // value if found or 'null' if not. 
            var searchValue = await _DbContext.Values.FindAsync(id);
            return Ok(searchValue);
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}

Большая часть его была сгенерирована из шаблона, и я начал изменять его в соответствии с руководством. Там, где нет проблем, пока я не начал работать над Get (int id). Именно тогда Visual Studio Code начал постоянно выдавать мне ошибки. Насколько я могу сказать, я сделал все с помощью учебника.

Если между методами Get () и Get (int id) есть два пробела, заголовок последнего метода получает несколько красных подчеркиваний. В частности, ключевые слова «ActionResult», «Value», «Get», «int» все подчеркнуты, а также последние «>» и «)» в заголовке метода.

Ошибки жалуются на:

Syntax error, ','(CS1003)  
Syntax error, '>'(CS1003)  
Syntax error,> ','(CS1003)  
Syntax error, ','(CS1003)  
Syntax error, ','(CS1003) 
Tuple must contain at least two elements. [...\Reactivities\API\API.csproj](CS8124)  
Identifier expected [...\Reactivities\API\API.csproj](CS1001)  
) expected [...(CS1026)

Если я настолько уменьшу разрыв между методами Get () и Get (int id) с двух до одной строкивсе красные волнистые линии в заголовке метода исчезают, и вместо этого только открывающая фигурная скобка в Get (int id) получает красную волнистую линию.

Это связанные ошибки:

Syntax error, ','(CS1003)  
Syntax error, '>'(CS1003)  
Identifier expected [...\Reactivities\API\API.csproj](CS1001)  
Syntax error, ','(CS1003)  
Syntax error, ','(CS1003)  
Identifier expected [...\Reactivities\API\API.csproj](CS1001)  
Syntax error, ','(CS1003)  
Tuple must contain at least two elements. [...\Reactivities\API\API.csproj](CS8124)  
Identifier expected [...\Reactivities\API\API.csproj](CS1001)  
) expected [...(CS1026)  

Я думаю, что это какая-то синтаксическая ошибка, но я не знаю, что это может быть. Кто-нибудь хочет взглянуть на этот код, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Я проверил (копировать / вставить), и в этом фрагменте кода нет синтаксической проблемы.

Возможно, ошибка в другом файле. Это может быть проблема с IntelliSense. Я рекомендую перестроить, возможно, перезапустить.

0 голосов
/ 02 ноября 2019

Ошибки такого типа означают следующее:

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

Настоящей ошибкой будет 1-я строка с сообщением об ошибке. Или до этого. Распространенной ошибкой является лишний / недостающий символ точки с запятой. Далее следуют лишние / недостающие кавычки. Но даже при ближайшем рассмотрении я не вижу очевидной проблемы с кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...