Полагаю, вы ищете обфускатор. Это инструмент, который возьмет скомпилированную DLL и перезапишет код с намерением не де-компилировать его другим пользователем. Visual Studio поставляется с бесплатным Dotfuscator
Обратите внимание, что на самом деле это не помешает людям смотреть на ваш код. Вместо этого они будут смотреть на очень странный перевод вашего кода. Невозможно запретить людям просматривать декомпилированные версии вашего кода на C # или на любом другом языке .Net.
Это не то, что уникально для C #. Это недостаток любого существующего языка. Вполне возможно декомпилировать C-код. Разница, однако, заключается в том, что при декомпиляции управляемых языков (например, .Net и Java) гораздо проще поддерживать большую часть исходной структуры кода, поскольку метаданные поддерживают исходную структуру.