@nordwind2013

Почему возвращает null при использовании метода объекта обобщенного класса?

Есть обобщенный класс, описывающий репозитории. Вот код
public class BaseServices<T> : IBaseService<T> where T : BaseEntity, new()

    {

        public List<T> AllItem = new List<T>();

        public bool Delete(int id) 
        {
            bool b = false;

            foreach (var a in AllItem)
            {
                if (a.Id == id)
                {
                    AllItem.Remove(a);

                    b = true;
                }
            }

            return b;
        }

        public T Get(int id)
        {
            T b = null;

            foreach (var a in AllItem)
            {
                if (a.Id == id)
                {
                    b = a;
                    return b;
                }
            }

            return b;
        }

        public object GetAll() 
        {
            object b = null;

            foreach (var a in AllItem)
            {
                b = a;
                return b;
            }

            return b;
        }

        public bool Save(T entity)
        {
            entity = new T();

            AllItem.Add(entity);

            return true;
        }
    }


И есть тест
List<AccountModel> Accounts = new List<AccountModel>();

        private BaseServices<AccountModel> AccountBS = new BaseServices<AccountModel>();

        Random rnd = new Random();

        public void Repletion()
        {
            for (int index = 0; index < 100; ++index)
            {
                AccountBS.AllItem[index] = new AccountModel();

                AccountBS.AllItem[index].Id = index;

            }

        }

    [TestMethod]
        public void GetTest()
        {
            int SomeId = rnd.Next(100);

            AccountModel result = AccountBS.Get(SomeId);

            Assert.IsNotNull(result);
        }
    }

Почему-то result = null.Подскажите пожалуйста.
  • Вопрос задан
  • 61 просмотр
Решения вопроса 2
Griboks
@Griboks Куратор тега C#
Список пуст. Значение по умолчанию null. Вот он и возвращает его.
Вы забыли вызвать Repletion для инициализации базы.
Ответ написан
Комментировать
makarenya
@makarenya
программист
Не вижу всего кода, но из того что вижу самое вероятное - не запускается Repletion. А если она не запускается, то метод Get ничего и не вернёт, так как AllItem окажется пустым. Добавьте в тесте ещё одну проверку до получения элемента - на то что AccountBS.AllItem не пустой массив
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы