>我有以下内容:
// Generator.cs
namespace MRP
{
public class Generator
{
public enum ModeGeneration
{
ByRequest,
ByCommit
}
}
}
// CustomerOrderWrapper.cs
namespace MRP
{
class CustomerOrderWrapper
{
readonly ModeGeneration _mode;
}
}
为什么我收到找不到命名空间名称"模式生成"的错误。这两个类都在MRP命名空间下,为什么编译器抱怨"ModeGeneration"命名空间?
再次阅读错误消息。它应该说"找不到类或命名空间 ModeGeneration"之类的内容,这是正确的,没有名为 ModeGeneration
的类/命名空间,也许你想要Generator.ModeGeneration
?
作为内部类,Generator.ModeGeneration
是整个类型名称,不能省略外部类名称,因为可以在 C# 中定义几个具有相同名称的内部类,如下所示:
namespace Foo
{
class One
{
public class Bar { }
}
class Another
{
public class Bar { }
}
}
你可以看到Bar
是模棱两可的。您应该改用One.Bar
和Another.Bar
。
这是因为您的枚举是在类中定义的。 按如下所示更改代码:
namespace MRP
{
class CustomerOrderWrapper
{
readonly Generator.ModeGeneration _mode;
}
}
方法可以解决这个问题
方法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;
}
}
我希望它能帮助你。
是的,它们在同一个命名空间中,但enum ModeGeneration
也在类Generator
内。因此,请执行以下任一操作:
- 将
enum
放在Generator
类之外,并根据需要使用它
或
- 在 CustomerOrderWrapper.cs 中使用生成器作为前缀
ModeGeneration
-Generator.ModeGeneration