Question: Is there a way (reliable and preferably not commercial) to prevent from Reflector to reflect my source code???

Thanks,
Adi

Answer: 
There is no way to prevent decompiling of .net code, with that said a good obfuscator will make reflected code harder to read, some of them like dotfuscator will prevent reflector from showing the C# code; however, you will always be able to see the IL.

One of the options in Dotfuscator is to use non-printable names (Reflect on reflector) This makes decompiling extremly difficult IMHO.

Microsoft used to sell a Software Proctection and Licensing Service which would encrypt the IL and use a custom VM that was tied to an encryption key which preventing reflecting using the conventional tools. This had a huge performance cost however it was good if you wanted to protect critical algorithims or for example your licensing code. 

<http://msdn.microsoft.com/en-us/slps/default.aspx>
Reflector does not use Reflection to show your source code. It uses the .Net metadata (which is in well known published format) to do that.

There is no way to prevent this, but you make make it pointless by obfuscating your assemblies. After obfuscating, class/method/fields are renamed, inline strings in methods are encrypted, method calls are hidden, method control flow is scrambled and so on. So, anybody who use Reflector will see a lot of garbage and will not be able to make sense of most of it.

DISCLAIMER: I work for LogicNP Software, the developers of [Crypto Obfuscator](http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm)