I am getting this error:
“CS0104: ‘DataType’ is an ambiguous reference between
while running an ASP.NET 4.0 application. Can any one help me on this issue?
As described in the documentation on Compiler Error CS0104 you’ve got a symbol clash – there are two classes in scope of your source file which are both called
DataType – one is in the namespace
System.ComponentModel.DataAnnotations and the other is in the namespace
You need to do one of the following to resolve this:
1. Explicitly provide the full namespace prefix on each usage, i.e.
var cdt = new CarlosAg.ExcelXmlWriter.DataType(); var sdt = new System.ComponentModel.DataAnnotations.DataType();
OR 2. Or use a using directive to alias the namespaces / types, e.g.
using SystemDT = System.ComponentModel.DataAnnotations; using Carlos = CarlosAg.ExcelXmlWriter;
And then then identify the types with the namespace aliases, e.g..
var dt = new Carlos.DataType();
OR 3. You can also alias at the class level:
using SystemDataType = System.ComponentModel.DataAnnotations.DataType; using CarlosDataType = CarlosAg.ExcelXmlWriter.DataType; ... var myObj = new CarlosDataType();
OR 4. If you don’t need to symbols from both namespaces, then delete the unused namespace from the
My preference would be for Option 2 – it makes it clearer to the reader that there is a namespace clash, without being too verbose (like Option 1 is)
Re: "I tried by giving full prefix but still I am getting error "CS0138: A
using namespace directive can only be applied to namespaces;
‘CarlosAg.ExcelXmlWriter.DataType’ is a type not a namespace"
(All relating to point #2, above). The error message refers to a situation like this, which isn’t permitted in .Net (but is permitted in Java imports)
// i.e. This won't work, can't import at a class level unless it is aliased using System.ComponentModel.DataAnnotations.DataType;
As per my answer, I would recommend that you alias the namespace, and then use the alias prefix to disambiguate between the 2
Answered By – StuartLC
Answer Checked By – Candace Johnson (BugsFixing Volunteer)