Следующее неверно
public List<T> Collector => new List<T>();
Функция стрелки - это сокращенный синтаксис для метода.То, что вы написали, эквивалентно следующему:
public List<T> Collector()
{
return new List<T>();
}
Так что каждый раз, когда вы вызываете Collector, вы возвращаете новый список, добавляете в него элемент, а затем уже не имеете ссылки на этот список.
Если вам нужно поле, замените его следующим:
public List<T> Collector = new List<T>();
Редактировать: я упустил тот факт, что вам нужен метод Collector для реализации вашего интерфейса.В этом случае может иметь смысл инициализировать список в поле, а затем вернуть его в вашей реализации Collector следующим образом:
class TestCollector<T> : ICollector<T>
{
private List<T> Collector _collector = new List<T>();
public List<T> Collector => _collector;
public void Add(T item)
{
_collector.Add(item);
}
}