Есть ли способ узнать, вызван или нет метод C# объекта с использованием отражения?Есть ли способ узнать, вызван ли метод C# объекта или нет?
ответ
Нет. Отражение только знает, как создается тип, а не как он вызван вашим приложением.
Вы можете создать массив из StackFrame внутри метода, чтобы узнать, как он был вызван.
Resharper может проверить, если метод вызывается или нет (это Визуальный плагин Студия)
Я сомневаюсь, что Resharper может сказать с точностью 100%. –
Я не утверждал, что это так, не так ли? Хотя он работает очень хорошо, пока все сборки находятся в одном и том же решении. – jgauffin
Если ваш вопрос о том, как узнать, когда будет ли назвать конкретный метод в любом случае и для любого входа, то отражение не может сделать это для вас.
Вам нужны инструменты для выполнения статического анализа программ, но они не предназначены для использования во время выполнения.
Если бы вы могли более подробно описать то, что вы пытаетесь выполнить, мы можем предложить альтернативу.
Один из способов узнать, вызван ли ваш метод, - использовать инструмент покрытия кода. Visual Studio Ultimate содержит такие инструменты, которые помогают определить покрытие кода. Сначала вы обрабатываете свой код, а затем запускаете свои тесты или обычно выполняете свое приложение, а затем проверяете свои результаты.
Или вы можете просто использовать текстовый редактор для поиска имени метода в исходном коде. (Это намного проще).
Если вы хотите найти какие-либо методы в своей сборке, которые никогда не вызываются какой-либо другой частью сборки, FxCop имеет правило «мертвого кода», которое найдет любые такие методы.
Поиск мертвого кода не включает методы, которые могут быть вызваны из внешнего мира, такие как общедоступные методы.
- 1. Есть ли способ узнать, является ли метод статическим или нет?
- 2. Есть ли способ узнать, запущен ли медиапланер или нет?
- 3. Есть ли способ узнать метод вызова?
- 4. Есть ли способ в Java, чтобы определить, вызван ли метод в статическом инициализаторе (или нет)?
- 5. Есть ли способ узнать, подписано ли событие?
- 6. Есть ли способ узнать тип объекта?
- 7. Как узнать, был ли конструктор вызван другим конструктором или нет?
- 8. Есть ли способ узнать, было ли явным образом вызвано `method_missing`?
- 9. Есть ли способ проверить, вызван ли beforeSave для нового объекта Parse или для обновления существующего объекта?
- 10. Есть ли программный способ узнать, было ли мероприятие [нет] GC'ed?
- 11. Есть ли способ узнать, заблокирован ли поток?
- 12. Есть ли способ узнать, обновляется ли строка?
- 13. Есть ли способ узнать, есть ли у отчета подписка или нет?
- 14. Есть ли способ узнать, что сохраняет объекты в C#
- 15. Используйте Powermockito, чтобы проверить, вызван ли частный метод или нет
- 16. Можно ли узнать, вызван ли метод в приложении?
- 17. RSpec. Как проверить, вызван ли метод объекта?
- 18. Есть ли способ (в PHP) обнаружить, был ли скрипт вызван загрузкой jQuery или нет?
- 19. Проверьте, вызван ли метод.
- 20. Есть ли способ узнать, является ли видео 360 или панорамой?
- 21. Есть ли способ узнать, является ли объект классом или объектом?
- 22. Есть ли способ узнать, активен ли режим locationManager или остановлен?
- 23. Есть ли способ проверить, инициализирован ли пользовательский класс или нет?
- 24. Как определить, вызван ли метод извне объекта или внутри?
- 25. Есть ли способ узнать, завершена ли timerTask?
- 26. Есть ли способ узнать, вращается ли UIPickerView?
- 27. Есть ли способ узнать, успешно ли ExecutorService?
- 28. Есть ли способ узнать, видна ли DataGridViewCell?
- 29. Как проверить, вызван ли метод?
- 30. Есть ли способ узнать, объявлен ли случай случайным или нет в классе в SV
Эластируйте пожалуйста. – 2010-10-14 08:43:03
Мое предположение, что OP хочет AOP-подобный способ добавления кода для определения того, какие кодовые пути выполняются. –
Спасибо всем за ваши ценные ответы. На самом деле мой сценарий довольно прост. Я работаю над существующим проектом, который использует следующий способ изменения значения в базе данных. Если свойство класса равно NULL, не изменяйте это значение в базе данных, так что клиент может инициализировать класс только с необходимыми свойствами изменения. Но иногда некоторое свойство может быть изменено на null, этот сценарий не будет поддерживаться в текущей логике. – fresky