编译器抱怨缺少命名空间,这是类的名称



>我有以下内容:

// 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.BarAnother.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

相关内容

最新更新