我收到此错误:
运行ASP.NET 4.0应用程序时" CS0104:' DataType'是一个模棱两可的参考 ' System.ComponentModel.DataAnnotations.DataType'和 ' CarlosAg.ExcelXmlWriter.DataType'"
。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:5)
你有一个符号冲突 - 你的源文件范围内有两个类,它们都被称为DataType
- 一个在namespace System.ComponentModel.DataAnnotations
,另一个在命名空间CarlosAg.ExcelXmlWriter.DataType'
。
您需要执行以下操作之一来解决此问题:
1。在每次使用时明确提供完整的名称空间前缀,即
System.ComponentModel.DataAnnotations.DataType
和CarlosAg.ExcelXmlWriter.DataType
:
var cdt = new CarlosAg.ExcelXmlWriter.DataType();
var sdt = new System.ComponentModel.DataAnnotations.DataType();
OR 2。或使用using directive to alias命名空间/类型,例如
using SystemDT = System.ComponentModel.DataAnnotations;
using Carlos = CarlosAg.ExcelXmlWriter;
然后使用命名空间别名识别类型,例如..
var dt = new Carlos.DataType();
OR 3。您也可以在班级别名:
using SystemDataType = System.ComponentModel.DataAnnotations.DataType;
using CarlosDataType = CarlosAg.ExcelXmlWriter.DataType;
...
var myObj = new CarlosDataType();
OR 4。如果您不需要两个名称空间中的符号,请从using
子句中删除未使用的名称空间。
我倾向于选项2 - 它使读者更清楚地知道存在命名空间冲突,而不是过于冗长(如选项1所示)
修改强>
Re:“我试过给出完整的前缀,但我仍然得到错误”CS0138:A 使用namespace指令只能应用于命名空间; 'CarlosAg.ExcelXmlWriter.DataType'是一种类型而不是命名空间“
(所有与上述第2点相关)。错误消息指的是这样的情况,在.Net中是不允许的(但在Java导入中是允许的)
// i.e. This won't work, can't import at a class level unless it is aliased
using System.ComponentModel.DataAnnotations.DataType;
根据我的回答,我建议您为命名空间设置别名,然后使用别名前缀消除2 DataType
s
答案 1 :(得分:0)
我有同样的问题。我使用的解决方案是删除所有使用并再次进行引用。效果很好。