using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Xml.Serialization; using static System.Net.Mime.MediaTypeNames; namespace Configuration { [XmlRoot(ElementName = "Videos")] public class Videos : INotifyPropertyChanged { private List _video = new List { }; [XmlElement(ElementName = "Video")] public List Video { get => _video; set { if (Equals(value, _video)) { return; } _video = value; OnPropertyChanged(); } } public Videos(IEnumerable mimeTypes) : this() { Add(mimeTypes); } public Videos() { } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(propertyName); return true; } public void Add(IEnumerable mimeTypes) { foreach (var mimeType in mimeTypes) { if (!_video.Contains(mimeType)) { _video.Add(mimeType); } } } } }