Динамически строить константу лямбда-выражения со статическим объектом [duplicate]

Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.

Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.

Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.

Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).

3
задан Daniel Hilgarth 17 July 2013 в 13:59
поделиться

1 ответ

Документация этого метода противоречива:

  • Документация параметра expression указывает, что она может быть null для статических членов
  • Документация ArgumentNullException заявляет, что он вызывается, если expression является null

Факт: этот метод не может использоваться для доступа к статическим членам, документация к expression неверен. Даже когда предоставляется выражение с правильным Type, этот метод работает не так, как ожидалось, потому что он только когда-либо ищет члены экземпляра.

Чтобы получить доступ к статическому полю или свойству, используйте Expression.MakeMemberAccess .

6
ответ дан Daniel Hilgarth 18 August 2018 в 15:11
поделиться
  • 1
    Тогда единственная разница между PropertyOrField и MakeMemberAccess, что последний позволяет использовать статический членский доступ? BTW, doc для MakeMemberAccess также глючит - он говорит, что выражение может быть нулевым для статических членов, а в разделе исключений указано, что ArgNullException будет выведено, если выражение равно null ... – KFL 22 June 2014 в 04:23