You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

53 lines
1.6 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Net3_Proxy
{
public class IReadOnlyList<T> : IEnumerable<T>
{
private readonly IList<T> list;
private IReadOnlyList(IList<T> lst)
=> list = lst;
public IEnumerator<T> 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<T>(List<T> list) => new IReadOnlyList<T>(list);
}
public class IReadOnlyDictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
{
private readonly IDictionary<TKey, TValue> dict;
private IReadOnlyDictionary(IDictionary<TKey, TValue> d)
=> dict = d;
public IEnumerator<KeyValuePair<TKey, TValue>> 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<TKey, TValue>(Dictionary<TKey, TValue> dict)
=> new IReadOnlyDictionary<TKey, TValue>(dict);
}
}