If a user knows almost anything about coding in .net, and they see a .dll, they have the unfortunate ability to call your public functions and subroutines. I know you could try a “key” system, where it will check for a certain “key” as an argument, and only run the code if the “key” is valid, but I just ran some code and a .dll that I made, and when the .dll threw an unhandled exception, it showed me the contents of the file.
How can you protect your .dlls? Should you only put code in that you are willing to risk?
Nevermind calling existing methods etc. Reflector will decompile the code!
Obfuscation will get you so far, but to protect critical IP you need to host it on a secure server that you control.