If you want to separate the interface from the implementation, it may be the parallel namespace MyNamespace.Foo.Interfaces and MyNamespace.Foo.Implementation.
By default, the namespace appears to be equivalent to a package or assembly: therefore, Foo and Bar will be the namespaces for foo.dll and bar.dll respectively.
I will add prefixes to the namespace if I need higher-level groups: for example, MyCorp.Server.Foo is the namespace for the server side foo.dll created by foo.dll .
Note that I'm adding prefixes, not suffixes: like MyCorp.Server.Foo , not Foo.Server.MyCorp . These structured namespaces correspond to the folder / directory structures that contain the source code and projects.
By default, all files in the package will have the same namespace (for example, all code in foo.dll belongs to the foo.dll namespace). If I ever add a suffix, this may hide this code from the rest of the assembly. For example, code in the MyCorp.Server.Foo.EditorTransactions namespace exists in foo.dll but is not considered by most other codes in foo.dll (except for code that explicitly uses MyCorp.Server.Foo.EditorTransactions ).
source share