Как узнать, какая именно операция отправлена ​​в Dispatcher? - PullRequest
1 голос
/ 03 октября 2011

Есть ли способ узнать, какой элемент пользовательского интерфейса отправил операцию в очередь Dispatcher, которая в конечном итоге выдает событие, System.Windows.Threading.Dispatcher.CurrentDispatcher.Hooks.OperationPosted

Обновление : личное свойство DispatcherOperation.Name показывает, что мне нужно при наведении курсора на VS в режиме отладки. Мне просто нужно напечатать это имя в логгер для других целей отладки. Можно ли извлечь Name динамически.

1 Ответ

0 голосов
/ 03 октября 2011

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

Вы всегда можете использовать Отражение для подобных вещей.Сначала вам понадобится Тип и Экземпляр объекта, который вы хотите прочитать его частные свойства.К сожалению, я не знаю, является ли имя, которое вы ищете, полем или свойством, но общая процедура аналогична.Сначала получите свойство с помощью GetProperty , а затем вызовите GetValue для возвращенного объекта PropertyInfo.Вы можете кэшировать объект PropertyInfo, чтобы получить некоторую скорость при отладке.Вам также нужно использовать правильный BindingFlags , опять же, я не знаю точно, как описывается поле / свойство, поэтому я не могу дать вам точный код, но отсюда должно быть легко разобраться.

Надеюсь, это поможет.

...