How to make the C# namespace work like Java Packages so they rename automatically when moving them?
c#, java, namespaces, package
Solution
I fix the problem by using an IDE plugin called Resharper. (Among many, many useful features) it highlights when a namespace is wrong (based on the folder hierarchy and root namespace of the assembly) and can fix it for you.
Note that unlike in Java, there are sometimes very valid reasons for a class to be in a namespace other than the one inferred by the directory structure. A good example might be extension method classes, which need to be in scope in the class that is invoking them. Therefore it is common to have:
/myProject
/extensions
/MyExtensionMethodClass.cs
with a namespace like `myProject` (so that the extension methods can be used anywhere in myProject without a using directive)
Problem
I come from Java and see that package in Java is very convenient. When you move a class to another package, it will change automatically the package. (of course, by IDE such as Eclipse or Netbean) But C# is using namespace and don't have my namespace renamed automatically like it does in Java. For example I have a file which namespace is `com.app` and I put it in `com.app`, but at later time, I move this file to `com.lib` folder and its namespace still be `com.app`. So, I find this is difficult to manage because I'm moving it manually. Please give me help in how to fix my problem. (that namespace of file is named by folder it contains, and when I move to other, I will automatically change). Can we do it?