using System.ComponentModel; using System.Runtime.CompilerServices; using System.Xml.Serialization; using Announcements.Properties; namespace Announcements { public class Announcement : INotifyPropertyChanged { #region Interface public event PropertyChangedEventHandler PropertyChanged; #endregion #region Private Methods [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion #region Public Enums, Properties and Fields [XmlIgnore] public string Id => _appId.ToString(); [XmlElement(ElementName = "AppId")] public int AppId { get => _appId; set { if (value == _appId) return; _appId = value; OnPropertyChanged(); } } [XmlElement(ElementName = "LingerTime")] public decimal LingerTime { get => _lingerTime; set { if (value == _lingerTime) return; _lingerTime = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Ignore")] public bool Ignore { get => _ignore; set { if (value == _ignore) return; _ignore = value; OnPropertyChanged(); } } [XmlElement(ElementName = "EnableChime")] public bool EnableChime { get => _enableChime; set { if (value == _enableChime) return; _enableChime = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Chime")] public byte[] Chime { get => _chime; set { if (value == _chime) return; _chime = value; OnPropertyChanged(); } } #endregion #region Private Delegates, Events, Enums, Properties, Indexers and Fields private int _appId = -1; private decimal _lingerTime = 5000; private string _speak = string.Empty; private bool _ignore = false; private bool _enableChime = true; private byte[] _chime = new byte[] {}; #endregion #region Constructors, Destructors and Finalizers [UsedImplicitly] public Announcement() { } #endregion } }