using System.ComponentModel; using System.Runtime.CompilerServices; using System.Xml.Serialization; using Servers.Properties; namespace Servers { [XmlRoot(ElementName = "Server")] public class Server : 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 [XmlElement(ElementName = "Name")] public string Name { get => _name; set { if (value == _name) return; _name = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Url")] public string Url { get => _url; set { if (value == _url) return; _url = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Username")] public string Username { get => _username; set { if (value == _username) return; _username = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Password")] public string Password { get => _password; set { if (value == _password) return; _password = value; OnPropertyChanged(); } } #endregion #region Private Delegates, Events, Enums, Properties, Indexers and Fields private string _name = string.Empty; private string _password = string.Empty; private string _url = string.Empty; private string _username = string.Empty; #endregion #region Constructors, Destructors and Finalizers [UsedImplicitly] public Server() { } public Server(string name, string url, string username, string password) : this() { Name = name; Url = url; Username = username; Password = password; } #endregion } }