using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; namespace Net3_Proxy { public class IReadOnlyList : IEnumerable { private readonly IList list; private IReadOnlyList(IList lst) => list = lst; public IEnumerator GetEnumerator() => list.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)list).GetEnumerator(); public int Count => list.Count; public T this[int index] => list[index]; public static implicit operator IReadOnlyList(List list) => new IReadOnlyList(list); } public class IReadOnlyDictionary : IEnumerable> { private readonly IDictionary dict; private IReadOnlyDictionary(IDictionary d) => dict = d; public IEnumerator> GetEnumerator() => dict.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => dict.GetEnumerator(); public int Count => dict.Count; public bool ContainsKey(TKey key) => dict.ContainsKey(key); public bool TryGetValue(TKey key, out TValue val) => dict.TryGetValue(key, out val); public TValue this[TKey key] => dict[key]; public static implicit operator IReadOnlyDictionary(Dictionary dict) => new IReadOnlyDictionary(dict); } }