public class Item
{
string _name;
ArrayList _subItems = new ArrayList();
public Item(string name) { _name = name; }
public string Name { get { return _name; } }
public ArrayList SubItems { get { return _subItems; } }
}
mot en IList istället
public class Item
{
string _name;
IList<Item> _subItems = new IList<Item>();
public Item(string name) { _name = name; }
public string Name { get { return _name; } }
public IList<Item> SubItems { get { return _subItems; } }
}
men får ett meddelande om att
Visual Studio skrev:
Cannot create an instance of the abstract class or interface 'System.Collections.Generic.IList<Entities.Item>'
IList<Item> _subItems = new [3][B]List[/B][/3]<Item>();
Att du har IList på vänster sidan och inte på högersidan beror på att man bör sträva efter att programmera mot ett interface/abstraktion. Gör du det så kan du helt enkelt byta ut List mot en annan konkret klass som implementerar IList utan att behöva göra några ändringar i koden som jobbar mot interfacet. Exempelvis så skulle du kunna göra så här:
IList<Item> _subItems = new [3][B]MyOwnImplementationOfIList[/B][/3]<Item>();