Ссылка на объект C# не установлена ​​на экземпляр объекта в IHttpActionResult

У меня были некоторые проблемы с моим кодом, дающим исключение nullreference. Но я не понимаю почему. В приведенном ниже коде моя программа дает мне nullrefexc.

Вторая часть кода - это переменная, которую должны представлять "модели var". Я также попытался использовать код второй части, но он также говорит то же самое, если я использую переменную избранное в коде IHttpActionResult.

Исключение:

            public IHttpActionResult GetAllFavorites()
            {
                var models = _favoriteModelFactory.CreateFavoritesFromFavoriteModel(_favoriteRepository.GetAll(),
                    _favoriteRepository);
                return Ok(models);
            }

Вторая часть:

        public IEnumerable<Favorite> GetAll()
    {
        IEnumerable<Favorite> favorites = new List<Favorite>
        {
            new Favorite
            {
                StudentId = 1,
                FavoritesIds = {2,5,8},
                FavoriteId = 1
            }
        };
        return favorites;         
    }

Спасибо за помощь!

1 ответ

Решение

Предполагая, что "FavoritesIds" является списком. Он никогда не создается в вашем фрагменте кода. Поэтому, когда вы назначаете {2,5,8} ему, вы получаете исключение нулевой ссылки.

Вы можете решить это двумя способами.

  1. В любимом конструкторе классов

  2. В методе GetAll()

    public static IEnumerable<Favorite> GetAll()
            {
                IEnumerable<Favorite> favorites = new List<Favorite>()
            {
                new Favorite
                {
                    StudentId = 1,
                    FavoritesIds = new List<int> {2,5,8},
                    FavoriteId = 1
                }
            };
                return favorites;
            }    
    

ИЛИ ЖЕ

public class Favorite
    {
        public Favorite()
        {
            FavoritesIds = new List<int>();
        }
        public int StudentId { get; set; }
        public List<int> FavoritesIds { get; set; }
        public int FavoriteId { get; set; }
    }
Другие вопросы по тегам