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

Thanks,
Adi

Answer: 
No. Reflector looks at your assembly just like the .NET runtime would in order to generate native code to execute. The best you could hope for would be to [obfuscate](https://stackoverflow.com/questions/2525/best-net-obfuscation-toolsstrategy) your code and make it (somewhat) harder for the reader to understand.

Some pros and cons of performing the obfuscation can be found at [Should you obfuscate a commercial .Net application?](https://stackoverflow.com/questions/71195/should-you-obfuscate-a-commercial-net-application)
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)