Pisałem o id w klasie base, kopiujesz produkt zapisujesz do bazy z ustawiasz mu NOWE id znane tylko klasie base i nikomu innemu id, a jedyną możliwość odnalezienia tego produktu to jest wyszukanie po id, którego nikt nie zna. Gdzie tu jest prostota.
Nie używa sie? a DateTime, Point itp. czym są? w klasie produkt jest tylko ślad hermetyzacji bo wszystko po za nazwą ma public set; get; wiec nawet z godnie z twoją logiką spełnia warunki na strukturę. Poza tym nawet jeśli użyłeś słowa class, to w cale nie zmienia faktu że jest to struktura. Poza kulawym toStringiem klasa produkt nie ma żadnych metod wiec jest tylko opakowaniem na dane, wiec jest strukturą, to że ją kopiujesz też swiadczy że to struktura. Jest o tym tuzin ksiązek i 10 tuzinów filmików na youtube.
]]>Wcześniej nie zauważyłem że kopiujesz produkt, w metodzie Add, przecież to jakaś masakra. Produkt nie powinien nieć właściwości id, to co zrobiłeś jest tak absurdalne że trudno o logiczne argumenty. Jakim cudem użytkowanik klasy base jest w stanie odleźć, lub usunąć produkt po ID jak go nie zna bo jest private? ma wypisać sobie w konsoli przepisać na na kartke i wywołać metodę remove? tego id się nawet przewidzieć nie da bo jak ktoś będzie konsekwentnie usuwał ze środka i to wyjdzie ser szwajcarski. To że dictionary i hashset są idealne do sytuacji z unikalnym id(po to je wymyślono) i to ze produkt powinien być strukturą przemilczę.
]]>