У меня есть код ниже, который вызывает исключение в средах интеграции, но не в моих модульных тестах. В основном я сортирую некоторые элементы XML (linq-2-sql XElement) по значению атрибута. Все узлы имеют определенный атрибут.
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name"))
Возникает исключение: «По крайней мере один объект должен реализовывать IComparable». Код можно исправить для работы в любом случае с помощью:
IEnumerable<XElement> elements = ...; // elementes are of the form<recipe name="something">
elements.OrderBy(e => e.Attribute("name").Value)
Но мне интересно, почему это вызывает исключение при запуске в среде отладки, а не в моих модульных тестах? Я боюсь, что некоторые утилиты, которые использует моя тестовая библиотека, имеют неожиданные побочные эффекты, но я ничего не могу найти. Что я должен искать?
Обратите внимание, что в тестовой среде elements.First().Attribute("name") не равно null, а elements.First().Attribute("name") as IComparable имеет значение null, поэтому в обоих случаях XAttribute не реализует IComparable .