AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.2.0" />

 MediaList

public class MediaList : DOMCollection, IEnumerable<string>, IEnumerable
using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; namespace AngleSharp.DOM.Collections { public class MediaList : DOMCollection, IEnumerable<string>, IEnumerable { private static readonly string[] ALLOWED = new string[9] { "tv", "screen", "tty", "projection", "handheld", "print", "braille", "aural", "all" }; private StringCollection media; public string this[int index] { get { if (index < 0 || index >= media.Count) return null; return media[index]; } } public int Length => media.Count; public string MediaText { get { StringBuilder stringBuilder = new StringBuilder(); if (media.Count > 0) { stringBuilder.Append(media[0]); for (int i = 1; i < media.Count; i++) { stringBuilder.Append(',').Append(media[i]); } } return stringBuilder.ToString(); } set { string[] array = value.SplitCommas(); string[] array2 = array; foreach (string medium in array2) { if (!CheckSyntax(medium)) throw new DOMException(ErrorCode.SyntaxError); } media.Clear(); string[] array3 = array; foreach (string newMedium in array3) { AppendMedium(newMedium); } } } public MediaList() { media = new StringCollection(); } protected virtual bool CheckSyntax(string medium) { if (string.IsNullOrEmpty(medium)) return false; return true; } public MediaList AppendMedium(string newMedium) { if (!CheckSyntax(newMedium)) throw new DOMException(ErrorCode.SyntaxError); if (media.Contains(newMedium)) media.Remove(newMedium); media.Add(newMedium); return this; } public MediaList DeleteMedium(string oldMedium) { if (!media.Contains(oldMedium)) throw new DOMException(ErrorCode.ItemNotFound); media.Remove(oldMedium); return this; } public IEnumerator<string> GetEnumerator() { StringEnumerator enumerator = media.GetEnumerator(); try { while (enumerator.MoveNext()) { string medium = enumerator.Current; yield return medium; } } finally { (enumerator as IDisposable)?.Dispose(); } } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)media).GetEnumerator(); } public override string ToHtml() { return string.Empty; } } }