Допустим, у меня есть этот класс:
class MyList<T> { }
Что я должен сделать с этим классом, чтобы сделать возможным следующее:
var list = new MyList<int> {1, 2, 3, 4};
Имейте метод Add и реализуйте IEnumerable.
class MyList<T> : IEnumerable { public void Add(T t) { } public IEnumerator GetEnumerator() { //... } } public void T() { MyList<int> a = new MyList<int>{1,2,3}; }
Реализация ICollection на MyList позволит синтаксису инициализатора работать
class MyList<T> : ICollection<T> { }
Хотя минимальный минимум будет:
public class myList<T> : IEnumerable<T> { public void Add(T val) { } public IEnumerator<T> GetEnumerator() { } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { } }
ICollection<T> is also good.