Предполагается, что есть какая-то услуга:
public interface IDeviceManagerService
{
ISomeDeviceApi Api { get; }
}
Его целью является мониторинг внешней среды (USB, сети и т. Д.), Создание экземпляра API устройства при обнаружении устройства и присвоение свойства null
, когда устройство больше не доступно.
Предположим, что есть модель просмотра с этим сервисом, я хотел бы получить уведомления об изменении для IDeviceManagerService.Api
, чтобы сделать возможными вещи, подобные приведенным ниже (например, наличие кнопки, которая активна только когда API устройства доступен).
private Boolean OnSomeCommandCanExecute()
{
return _deviceManagerService.Api != null;
}
Интересно, есть ли чистый способ сделать эту работу без ручной обработки уведомлений об изменениях (с Catel.Fody или PropertyChanged.Fody). До сих пор мне удавалось получить рабочий результат, создав реализацию сервиса из ModelBase
, зарегистрировав внедренный экземпляр как [Model]
внутри модели представления и выставив его свойство Api
с помощью атрибута [ViewModelToModel]
, но это очень грязно способ.
Есть ли какой-то общий подход или было бы лучше пойти с реализацией INotifyPropertyChanged и использовать вместо этого уведомления wrapper ?