Есть ли способ узнать, вызывается ли C # метод объекта или нет? - PullRequest
1 голос
/ 14 октября 2010

Есть ли способ узнать, вызывается ли метод C # объекта или нет с использованием отражения?

Ответы [ 4 ]

1 голос
/ 14 октября 2010

Один из способов узнать, вызывается ли ваш метод, - использовать инструмент покрытия кода. Visual studio Ultimate содержит такие инструменты, которые помогут определить охват кода. Сначала вы проверяете свой код, а затем запускаете тесты или выполняете приложение в обычном режиме, а затем проверяете свои результаты.

Или вы можете просто использовать текстовый редактор для поиска имени метода в вашем исходном коде. (Это, безусловно, самый простой).

0 голосов
/ 14 октября 2010

Если вы хотите найти какие-либо методы в вашей сборке, которые никогда не вызываются какой-либо другой частью сборки, FxCop имеет правило "мертвого кода", которое найдет любые такие методы.

Поиск мертвого кода не включает методы, которые могут быть вызваны из внешнего мира, такие как публичные методы.

0 голосов
/ 14 октября 2010

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

Вам необходимы инструменты для статического анализа программ, но они не совсем предназначены для использования во время выполнения.

Если бы вы могли более подробно описать, чего вы пытаетесь достичь, мы могли бы предложить альтернативу.

0 голосов
/ 14 октября 2010

Нет. Reflection знает только, как создается тип, а не как он вызывается вашим приложением.

Вы можете создать массив StackFrame внутри метода, чтобы знать, как он вызывался.

Resharper может проверить, вызван метод или нет (это плагин Visual Studio)

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