using System.Collections; namespace LibMatrix.EventTypes.Abstractions; public interface IMatrixEventCollection : IEnumerable> where T : BaseMatrixEventContent { } public class MatrixEventCollection : IMatrixEventCollection, IList> { private IList> _listImplementation; IEnumerator> IEnumerable>.GetEnumerator() => GetEnumerator(); public IEnumerator> GetEnumerator() => _listImplementation.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)_listImplementation).GetEnumerator(); public void Add(MatrixEvent item) => _listImplementation.Add(item); public void Clear() => _listImplementation.Clear(); public bool Contains(MatrixEvent item) => _listImplementation.Contains(item); public void CopyTo(MatrixEvent[] array, int arrayIndex) => _listImplementation.CopyTo(array, arrayIndex); public bool Remove(MatrixEvent item) => _listImplementation.Remove(item); public int Count => _listImplementation.Count; public bool IsReadOnly => _listImplementation.IsReadOnly; public int IndexOf(MatrixEvent item) => _listImplementation.IndexOf(item); public void Insert(int index, MatrixEvent item) => _listImplementation.Insert(index, item); public void RemoveAt(int index) => _listImplementation.RemoveAt(index); public MatrixEvent this[int index] { get => _listImplementation[index]; set => _listImplementation[index] = value; } } public class MatrixEventCollection : IMatrixEventCollection, IList> where T : BaseMatrixEventContent { //TODO: implement private IList> _listImplementation = new List>(); IEnumerator> IEnumerable>.GetEnumerator() => GetEnumerator(); public IEnumerator> GetEnumerator() => _listImplementation.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)_listImplementation).GetEnumerator(); public void Add(MatrixEvent item) => _listImplementation.Add(item); public void Clear() => _listImplementation.Clear(); public bool Contains(MatrixEvent item) => _listImplementation.Contains(item); public void CopyTo(MatrixEvent[] array, int arrayIndex) => _listImplementation.CopyTo(array, arrayIndex); public bool Remove(MatrixEvent item) => _listImplementation.Remove(item); public int Count => _listImplementation.Count; public bool IsReadOnly => _listImplementation.IsReadOnly; public int IndexOf(MatrixEvent item) => _listImplementation.IndexOf(item); public void Insert(int index, MatrixEvent item) => _listImplementation.Insert(index, item); public void RemoveAt(int index) => _listImplementation.RemoveAt(index); public MatrixEvent this[int index] { get => _listImplementation[index]; set => _listImplementation[index] = value; } }