You can use a professional obfuscation tool such as Dash-O-Pro which will render any decompiled class pretty much un-readable (apart from to the odd UberGeek or two) but there are drawbacks 1) Very Expensive 2) For every Obfuscator - there is a De-Obfuscator in the pipeline
Its not what you do, its the way you say you've done it.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com
subject: How to prevent class file from decompiling?