вам не хватает приведения?

#.net #razor #asp.net-mvc-5

#.net #razor #asp.net-mvc-5

Вопрос:

Не удается неявно преобразовать тип ‘DoctorFront.Модели.DocMaster’ to ‘System.Коллекции.IEnumerable’. Существует явное преобразование (вам не хватает приведения?)

 namespace DoctorFront.Controllers
{
    public class DoctorController : ApiController
    {
        static readonly IDocRepositories Repository  =new DocRepositories();
        public IEnumerable GetAllDoctor()
        {
            return Repository.GetAll();
        }

        public IEnumerable GetDoctor(int id) 
        {

            return Repository.Get(id);
        }

    }
}
 

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

1. Я предполагаю, что ваш GetDoctor метод предназначен для возврата DocMaster , верно?

2. измените возвращаемый тип на что-то вроде DocMaster .

3. Да, он возвращает главную таблицу документа

4. спасибо @Амит Кумар Гош, это сработало

Ответ №1:

 public IEnumerable GetDoctor(int id) 
{

    return Repository.Get(id); // problem here
}
 

Предполагается, что ваш метод GetDoctor возвращает объект типа IEnumerable . Ваш оператор return возвращает только один DocMaster объект.

Так что это должно сработать:

 public DocMaster GetDoctor(int id) 
{

    return Repository.Get(id);
}
 

Надеюсь, это поможет!

Ответ №2:

Как и в любом методе, ваш возврат должен соответствовать объявлению метода. Итак, если у вас есть метод public IEnumerable Get(int id) , вам нужно будет вернуть любой класс, который реализует IEnumerable .

Приведенный BviLLe_Kid пример показывает его правильное исправление, чтобы перестать получать эту ошибку.

Вот более полный пример:

 public IHttpActionResult Get(int id) 
{
    var doc = Repository.Get(id);

    if (doc == null)
        return NotFound();

    return Ok(doc);
}
 

Если вы работаете с Web API , полезно прочитать о rest