Если вопрос в хранении по время исполнения программы, так тут List, Dictionary и просто массивы. Queue и Stack тоже есть. Рекомендую использовать обобщенные варианты, т.е. List, Dictionary, т.е. параметризированные типом.
С точки зрения архитектуры - в слой доступа к данным. Создайте декоратор какой-нить, который работает с хранилищем и вперед - все ваши объекты туда. Пусть декоратор реализует какой-нить интерфейс ICollection. Вот и будет вам и Add, и Remove, и Get и GetAll. Можно даже static его сделать - пусть будет доступен откуда угодно.