Избегайте null, чтобы войти в список
Пожалуйста, смотрите код ниже
1. persons = Items.Select(item => componentResolver.ResolvePerson(new TridionUri(item.Id))).ToList();
2. persons.Each(person => person.AdditionalInfo); // gives null reference exception
ResolvePerson выглядит так:
public Person ResolvePerson(TridionUri personUri)
{
Person person = publicationResolverService.GetPerson(personUri);
if (author != null)
{
person.Id = personUri.ItemId.ToString();
}
return person;
}
Теперь проблема в том, что "предметы" содержат идентификатор, для которого человек не существует. Поэтому мой "ResolvePerson" возвращает null. Это приводит к исключению в строке№2. У меня есть только контроль над методом ResolvePerson. Есть ли способ пропустить personUri, для которого нет персоны, вместо того, чтобы возвращать null?
2 ответа:
Перед вызовом второй строки с помощью предложения where следует отфильтровать нулевые элементы. Но если вы не можете контролировать этот код, как вы сказали, Вы можете вернуть "фальшивку"
Person
, которая знает, что это подделка, и ничего не делает, когда вы звонитеAdditionalInfo
Person person = publicationResolverService.GetPerson(personUri); if (author != null) { person.Id = personUri.ItemId.ToString(); } else { person = _fakePerson; } return person;