Я не могу найти ничего, где можно было бы решить эту проблему. Я написал модульный тест для проверки этого метода
public double CalculateTotalWeight()
{
double result = 0;
if (Store?.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
}
Модульный тест не прошел из-за того, что объект nullexceptionreference
не инициализирован в свойстве Weight. Как проверить, есть ли какое-либо свойство Weight или инициализировано ли свойство Weight?
Я пробовал множество способов
if (Store?.TypeOfRacquet.Any())
if (Store?.TypeOfRacquet.Where(m => m.Weight != null)
if (Store?.TypeOfRacquet.First().Weight != null)
РЕДАКТИРОВАТЬ
Вот мое свойство Weight внутри TypeOfRacquet
public int Weight
{
get { return Get<int>(); }
set { Set(value); }
}
Мой модульный тест
[TestMethod]
public void CalculateTotalt_Without_Weight_Test()
{
var entity = new Store
{
TypeOfRacquet = new TypeOfRacquet
{
Id = Guid.NewGuid()
}
};
var result = entity.CalculateTotalWeight();
Assert.AreEqual(0, result);
}
При отладке я получаю исключение System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта
2 ответа
Спасибо, ребята, за помощь, это то, что я сделал, у меня работает
if (Store != null)
{
foreach (var racquet in Store.TypeOfRacquet)
{
result += racquet.Weight;
}
}
Скорее всего, проблема в том, что ваш TypeOfRacquet
равен нулю. Вы также должны проверить это в своем условии if
, прежде чем пытаться вызвать метод Any
:
double result = 0;
if (Store?.TypeOfRacquet != null && Store.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
Или проще:
return Store?.TypeOfRacquet?.Sum(m => m.Weight) ?? 0;
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.