Próbuję dodać inicjalizację kolekcji do mojej klasy. Czytałem o tutejszych inicjalizatorów: https://msdn.microsoft.com/en-us/library/bb384062.aspx#Anchor_2Używanie inicjalizatora kolekcji w mojej własnej klasie
Zacytuję ważny fragment, który mnie zagadką:
Collection initializers let you specify one or more element initializers when you initialize a collection class that implements IEnumerable or a class with an Add extension method.
OK, więc chcę podkreślić na słowie lub. Czytając go, powinienem móc stworzyć klasę z metodą Add, a następnie inicjator kolekcji powinien działać na tej klasie? Wydaje się, że tak nie jest. Jedną rzeczą, którą zauważyłem, było to, że w rzeczywistości mówi ona o metodzie Add extension. Więc spróbowałem stworzyć metodę Add as a extension, ale bez skutku.
Oto mała próbka Próbowałem że nie działa:
public class PropertySpecificationCollection
{
private List<PropertySpecification> _internalArr;
public void Add(PropertySpecification item)
{
_internalArr.Add(item);
}
}
Czy cytat z zastrzeżeniem innych interpretacji niż mój? Próbowałem go czytać wielokrotnie, aby zobaczyć, czy mogę to interpretować w jakikolwiek inny sposób, ale nie udało mi się tego zrobić.
Więc domyślam się, że moje pytanie brzmi: czy interpretuję to źle, czy brakuje mi czegoś, czy jest jakiś błąd w opisie inicjalizatorów kolekcji na MSDN?
Co się stanie, gdy utworzysz instancję 'PropertySpecificationCollection' i zainicjujesz kolekcję w konstruktorze? –
To wygląda na błąd w dokumentacji, musisz zaimplementować 'IEnumerable' i musi istnieć odpowiednia metoda' Add'. – Lee
http://stackoverflow.com/questions/2495791/custom-collection-initializers – Mino