Question: iam developing WPF product. I want to protect my .net source code from reverse enginering 
Please advice me

Answer: 
You would use an obfuscator. There are a lot of them on the market, just google.  

For example, Visual Studio used to ship with the [Dotfuscator Community Edition](http://www.preemptive.com/products/dotfuscator). I never used it, so I can't say anything about its quality.  

This blog post shows the possible ways to try to prevent reverse engineering: <http://blogs.msdn.com/b/ericgu/archive/2004/02/24/79236.aspx>
Obfuscating your assemblies will ensure that it is difficult (if not impossible) to reverse-engineer your compiled assemblies. Obfuscators use techniques like symbol renaming, string encryption, control flow obfuscation to try to obfuscate the meaning of the original code. In some cases, it is even possible to totally hide the code from decompilers (however, decompilers are constantly evolving to overcome this).

Take a look at [Crypto Obfuscator](http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm).

DISCLAIMER: I work for LogicNP, the developer of Crypto Obfuscator.