Получение данных LINQ vs Reflection - PullRequest
4 голосов
/ 01 декабря 2011

Я надеялся, что кто-нибудь скажет мне, какой способ является более эффективным и / или правильным для получения некоторых данных.

У меня есть несколько XML-файлов от сторонних производителей и прикрепленные к ним DTD. Итак, я преобразовал DTD в класс C #, чтобы я мог десериализовать XML в классы. Теперь мне нужно отобразить эти данные так, чтобы они соответствовали настройке моих структур данных.

Вопрос, в конечном счете, таков; я должен использовать отражение или LINQ. Формат XML является несколько общим по своему дизайну, где вещи хранятся в Items [Array] или Item [Object].

Я сделал следующее:

TheirClass class = theirMessage.Items.Where(n=> n.GetType() == typeof(TheirClass)).First() as TheirClass;

MyObject.Param1 = ConversionHelperClass.Convert(class.Obj1);
MyObject.Param2 = ConversionHelperClass.Convert(class.Obj2);

Я также могу сделать кое-что с Reflection, где я передаю имена Классов и Атрибутов, которые я пытаюсь поймать.

Попытка сделать все правильно здесь.

1 Ответ

5 голосов
/ 01 декабря 2011

Как правило, я бы рекомендовал избегать рефлексии, если это не является абсолютно необходимым!Он вводит накладные расходы на производительность и означает, что вы пропускаете все прекрасные проверки времени компиляции, которые команда компилятора так усердно работала, чтобы предоставить нам.

Linq для сущностей по существу запрашивает набор данных в памяти,это может быть очень быстро.

Если вашей конечной целью является анализ информации из XML-документа, я бы предложил проверить класс XDocument .Это очень хорошая абстракция для запросов к XML-документам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...