我有以下内容:
// Generator.cs
namespace MRP
{
public class Generator
{
public enum ModeGeneration
{
ByRequest,
ByCommit
}
}
}
// CustomerOrderWrapper.cs
namespace MRP
{
class CustomerOrderWrapper
{
readonly ModeGeneration _mode;
}
}
为什么我收到名称空间名称' ModeGeneration'无法找到。这两个类都在MRP命名空间下,为什么编译器抱怨' ModeGeneration'命名空间?
答案 0 :(得分:2)
再次阅读错误消息。它应该说“找不到类或命名空间ModeGeneration”,这是正确的,没有名为ModeGeneration
的类/命名空间,也许你想要Generator.ModeGeneration
?
作为一个内部类,Generator.ModeGeneration
是整个类型的名称,你不能省略外部类名,因为你可以在C#中定义一些具有相同名称的内部类,如下所示:
namespace Foo
{
class One
{
public class Bar { }
}
class Another
{
public class Bar { }
}
}
您可以看到Bar
含糊不清。您应该使用One.Bar
和Another.Bar
代替。
答案 1 :(得分:1)
是的,它们位于同一名称空间中,但enum ModeGeneration
也位于Generator
类内。所以:
enum
放在Generator
课程之外并按原样使用或
ModeGeneration
- Generator.ModeGeneration
答案 2 :(得分:1)
这是因为你的枚举是在课堂上定义的。更改代码如下:
namespace MRP
{
class CustomerOrderWrapper
{
readonly Generator.ModeGeneration _mode;
}
}
答案 3 :(得分:1)
有两种方法可以解决这个问题
方法1)您可以使用枚举前面的类名
namespace MRP
{
public class Generator
{
public enum ModeGeneration
{
ByRequest,
ByCommit
}
}
}
// CustomerOrderWrapper.cs
namespace MRP
{
class CustomerOrderWrapper
{
readonly Generator.ModeGeneration _mode;
}
}
方法2)您可以将类中的枚举带到命名空间
namespace MRP
{
public enum ModeGeneration
{
ByRequest,
ByCommit
}
public class Generator
{
}
}
// CustomerOrderWrapper.cs
namespace MRP
{
class CustomerOrderWrapper
{
readonly ModeGeneration _mode;
}
}
我希望它会对你有所帮助。