Александр Прохорович, ну так я и взял миллион треков из вопроса пользователя.
Тем не менее 17 петабайт это тоже не сильно много для такого сервиса в единчном экземпляре.
Посыл моего ответа скорее в том, что сами объемы данных - это не то что прям сильно важно в данном случае.
Alexander, так а что мешает писать #if LINUX а потом параметрами компилятора указать платформу?
Вы же можете настраивать параметры компиляции и его директивы. Делаете 2 варианта сборки проекта - "под линукс" и "под виндовс" - все равно там постпроцесс разный наверняка. И в них определяете нужные дефайны.
Препроцессорные директивы вы можете задать сами для компилятора. Т.е. это не часть дотнета/сишарпа - вы их просто определяете когда компилируете на нужной платформе и все.
Lisik, да. И что в этом такого? Ну можете сильнее подробить строку - сделать GetName, и уже без всяких кейсов формировать строку из имени и параметров.
Не похоже просто что тут вообще какой то паттерн нужен.
nano_e_t_4, ну так посмотрите попал ли он в группу донтдестроев - в иерархии есть.
И если вы руками его уничтожаете - то конечно же он будет уничтожен и не появится