Dev28
Dev28

Reputation: 507

One namespace per assembly?

Is it a general guideline to have at least one namespace per assembly?

In what case, should multiple assemblies generally share the same namespace?

Development Environment : C# and .NET

Upvotes: 4

Views: 1317

Answers (3)

rfcdejong
rfcdejong

Reputation: 2320

I would suggest to let the namespace match it's file location. Try and install resharper, you will see what i mean.

I do not know of a case where assemblies should share the same namespace. Only the first part of a namespace should be the same, the name of the company or product.

See this post from Mark

And this post to tell Resharper to get around this.

Upvotes: 0

kdmurray
kdmurray

Reputation: 3048

The answer is -- it depends.

If your assemblies are all small components of a given project, they may not need their own namespaces if they are distinct, self-contained and all "fit" under the namespace for the overall project.

If you're building assemblies which are only tangentially related and could easily be used in a wide variety of projects, you may want to group these in their own namespace.

If you're creating a class which has similar functionality or duplicate members to an existing class in your project or the CLR, you'll want a namespace for that too.

Upvotes: 0

Mr_Green
Mr_Green

Reputation: 41832

From MSDN

Assembly

An assembly is a collection of types and resources that forms a logical unit of functionality. All types in the .NET Framework must exist in assemblies; Each time you create a Microsoft Windows® Application, Windows Service, Class Library, or other application with Visual Basic .NET, you're building a single assembly. Each assembly is stored as an .exe or .dll file.

Namespace

Namespaces are not a replacement for assemblies, but a second organizational method that complements assemblies. Namespaces are a way of grouping type names and reducing the chance of name collisions. A namespace can contain both other namespaces and types. The full name of a type includes the combination of namespaces that contain that type.

Upvotes: 1

Related Questions