Visual Studio не заботится о структуре каталогов. Либо файлы (.cs) включены в проект и скомпилированы, либо они не включены в проект и, следовательно, не скомпилированы. Поэтому независимо от того, в какой папке находятся разные файлы, они смогут вызывать друг друга, если это позволяет их видимость (внутренняя или открытая).
Если вы хотите, чтобы пользователь мог выбирать из различных наборов классов, вам придется использовать какой-то другой метод, чтобы провести различие, помимо использования каталога исходного кода.
Редактировать
Это при условии, что вы собираете ваши файлы .cs как один проект. Если вы собираетесь компилировать папки с кодом при запуске программы, то то, как код взаимодействует, будет зависеть от особенностей используемого вами метода.