【发布时间】:2018-01-22 10:50:15
【问题描述】:
我的问题如下:
我有一个命名空间,比如说“Foo”。其中已经有两个类,比如说“MyClass”和“SomeOtherClass”。它们都在不同的文件中。
我需要在第三个文件中向这个命名空间添加第三个类,比如说“数据”。
首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但随后项目发生了一些变化,为了清楚起见,需要将“SomeOtherClass”中使用“Data”的逻辑移到“MyClass”中。
但是现在每当我尝试编译时,我都会收到一个编译器错误报告“找不到类型或命名空间名称‘数据’”。
奇怪的是,如果我尝试在编辑器中输入“Data”,那么智能感知会提示我该类的有效选项,如果我以“Foo.Data”开头也是一样,名称也会显示浅蓝色。
如果我删除“数据”并将类添加到与“MyClass”相同的文件中,一切都很好。如果我在自己的文件中重新添加“数据”(不删除 MyClass 文件中的那个),那么“Foo.Data”和“Foo.Data”之间就会出现歧义(这是合乎逻辑的)。
我也尝试从头开始删除并重新创建“数据”,但没有解决任何问题。
我在互联网上搜索了一个解决方案,但我只能找到与项目引用或目标框架不好相关的答案,但这不适用于我的情况,因为它们都在同一个项目中,我可以访问周围其他项目中的“数据”。
注意:我不知道它是否重要,但“MyClass”和“SomeOtherClass”继承自同一个父类。
1. MyClass.cs
namespace Foo
{
public class MyClass
{
private Data data; //Error at compile time - Type or namespace name 'Data' could not be found
}
}
2。数据.cs
namespace Foo
{
public class Data
{
//Some logic to handle the data
}
}
3. SomeOtherClass.cs
namespace Foo
{
public class SomeOtherClass
{
private Data data; //Actually works well
}
}
【问题讨论】:
-
所有班级都在同一个项目中?
-
您能否确认相关的 *.cs 文件已将 BuildAction 设置为 Compile?
-
是的,所有班级都在同一个项目中,在同一个文件夹下。 @Grx70 这是我检查的第一件事,是的,所有相关的 *.cs 都将 BuildAction 设置为 Compile
-
这很奇怪。从您发布的内容(尽管它很模糊)看来,这个错误似乎不是来自您的代码,所以我的下一个猜测是项目中的一个“错误”。我会尝试以下步骤:将
Data移动到其他文件(例如Data2.cs)并删除_Data.cs。如果有帮助,请尝试将 Data2.cs 重命名为 Data.cs。如果它再次中断,请检查 .csproj 文件以查找对 Data.cs 的引用并查找异常情况。但是,如果将Data移动到 Data2.cs 没有帮助,则错误可能出在您的代码中 - 仔细检查MyClass和SomeOtherClass。 -
另外,我假设您已经尝试过“关闭再打开”,即清理项目/解决方案,删除 bin 和 obj 文件夹等
标签: c# visual-studio-2010