views:

896

answers:

2

Here's the problem, you include multiple assemblies and add 'using namespaceX' at the top of your code file.
Now you want to create a class or use a symbol which is defined in multiple namespaces, e.g. System.Windows.Controls.Image & System.Drawing.Image

Now unless you use the fully qualified name, there will be a crib/build error due to ambiguity inspite of the right 'using' declarations at the top. What is the way out here?

(Another knowledge base post.. I found the answer after about 10 minutes of searching because I didn't know the right keyword to search for)

+8  A: 

Use alias

using System.Windows.Controls;
using Drawing = System.Drawing;

...

Image img = ... //System.Windows.Controls.Image
Drawing.Image img2 = ... //System.Drawing.Image

How to: Use the Namespace Alias Qualifier (C#)

aku
Deleting my answer to reduce clutter. 'Namespace Alias Qualifier' - now that name is something I would have never have figured out to use as a search keyword. :)
Gishu
Yep, it's a very good example of Single Responsibility Principle violation. But it's too fun to show it to you colleagues and hearing "Wow!, FTW?!"
aku
+1  A: 

This page has a very good writeup on namespaces and the using-statement:

http://www.blackwasp.co.uk/Namespaces.aspx

You want to read the part about "Creating Aliases" that will allow you to make an alias for one or both of the name spaces and reference them with that like this:

using ControlImage = System.Windows.Controls.Image;
using System.Drawing.Image;

ControlImage.Image myImage = new ControlImage.Image();
myImage.Width = 200;
Espo