Как определить, какие переменные состояния читаются / записываются в данном методе в C #

Каков самый простой способ определить, читает или записывает данный метод переменную или свойство-член? Я пишу инструмент для помощи в системе RPC, в которой доступ к удаленным объектам стоит дорого. Возможность определить, не используется ли данный объект в методе, может позволить нам избежать сериализации его состояния. Совершенно разумно делать это в исходном коде (но возможность сделать это в скомпилированном коде было бы замечательно)

Я думаю, что могу написать свой собственный простой синтаксический анализатор, я могу попробовать использовать один из существующих синтаксических анализаторов C # и работать с АСТ. Я не уверен, можно ли это сделать с помощью сборок, использующих отражение. Есть ли другие способы? Что было бы самым простым?

EDIT: Спасибо за все быстрые ответы. Позвольте мне дать дополнительную информацию, чтобы прояснить вопрос. Я определенно предпочитаю правильный, но он определенно не должен быть слишком сложным. Я имею в виду, что мы можем ' Я захожу слишком далеко, проверяя крайности или невозможности (как упоминались переданные делегаты, что является отличным моментом). Было бы достаточно обнаружить эти случаи и предположить, что все можно использовать, а не оптимизировать. Я предполагаю, что такие случаи были бы относительно необычными. Идея состоит в том, чтобы этот инструмент был передан разработчикам вне нашей команды, которые не должны беспокоиться об этой оптимизации. Инструмент берет их код и генерирует прокси для нашего собственного протокола RPC. (мы используем protobuf-net только для сериализации, но без удаленного взаимодействия wcf или .net). По этой причине все, что мы используем, должно быть бесплатным, иначе мы не сможем развернуть инструмент для решения проблем с лицензированием.

8
задан cloudraven 15 September 2010 в 07:11
поделиться