современный Дизайн C++, блестящая платформа книги и шаблона разработки Alexandrescu. Word предупреждения, после чтения этой книги я прекратил делать C++ и думал, "Какого черта, я могу просто выбрать лучший язык и получить его бесплатно".
Если вы реализуете ICollection
, вы получите желаемую функциональность.
Исправление: вам фактически нужно реализовать только IEnumerable
или ] IEnumerable
и иметь общедоступный метод Add
в вашем классе:
public class Wrapper : IEnumerable<int>
{
public List<int> TList
{ get; private set; }
public Wrapper()
{
TList = new List<int>();
}
public void Add(int item)
{
TList.Add(item);
}
public IEnumerator<int> GetEnumerator()
{
return TList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
(Я также взял на себя смелость сделать установщик TList
закрытым; обычно рекомендуется свойства этого типа коллекции доступны только для чтения, поэтому коллекцию как таковую нельзя заменить никаким кодом за пределами типа.)
Чтобы получить инициализаторы коллекций, вам нужно сделать 2 вещи:
Предпочтительный способ получить это: для реализации ICollection, но минимум, который вам нужно сделать, это:
public class Wrapper : IEnumerable<int>
{
public List<int> TList
{get;set;}
public IEnumerator<int> GetEnumerator()
{
return TList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() // Explicitly implement the non-generic version.
{
return TList.GetEnumerator();
}
public void Add(int i)
{
TList.Add(i);
}
public Wrapper()
{
TList=new List<int>();
}
}