In addition to Griffs advice, a well known obfuscator is
Dotfuscator[
^]
and here are some alternatives:
obfuscators-for-net-code[
^]
However, no obfuscator is perfect, and my experience with Dotfuscator is that using reflection will most of the times cause trouble, you can however exclude parts of your code from obfuscation.