using System; using System.ComponentModel; using System.Reflection; using System.Runtime.Serialization; using System.Windows.Input; using Aitex.Core.UI.MVVM; namespace Aitex.Core.Common.DeviceData { [Serializable] [DataContract] public class AITPressureSensorData : INotifyPropertyChanged, IDeviceData { [DataMember] public string DeviceName { get; set; } [DataMember] public string DisplayName { get; set; } [DataMember] public string DeviceSchematicId { get; set; } [DataMember] public string Unit { get; set; } [DataMember] public string Description { get; set; } [DataMember] public double Scale { get; set; } [DataMember] public double FeedBack { get; set; } [DataMember] public bool IsWarning { get; set; } [DataMember] public bool IsError { get; set; } [DataMember] public bool IsOutOfRange { get; set; } public event PropertyChangedEventHandler PropertyChanged; public void InvokePropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public void InvokePropertyChanged() { PropertyInfo[] properties = GetType().GetProperties(); PropertyInfo[] array = properties; foreach (PropertyInfo propertyInfo in array) { InvokePropertyChanged(propertyInfo.Name); if (propertyInfo.PropertyType == typeof(ICommand) && propertyInfo.GetValue(this, null) is DelegateCommand delegateCommand) { delegateCommand.RaiseCanExecuteChanged(); } } FieldInfo[] fields = GetType().GetFields(); FieldInfo[] array2 = fields; foreach (FieldInfo fieldInfo in array2) { InvokePropertyChanged(fieldInfo.Name); if (fieldInfo.FieldType == typeof(ICommand) && fieldInfo.GetValue(this) is DelegateCommand delegateCommand2) { delegateCommand2.RaiseCanExecuteChanged(); } } } public AITPressureSensorData() { DisplayName = "Undefined"; Unit = "mTorr"; } public void Update(IDeviceData data) { throw new NotImplementedException(); } } }