为什么我的枚举不能在另一个班级找到?

时间:2013-02-26 03:31:04

标签: c# visual-studio enums xamarin.android

当尝试从另一个类访问名为Monsters的enum时,Visual Studio给出了错误“找不到类型或命名空间名称'Monsters'(你是否缺少using指令或程序集)引用?)“,尽管我班上有一个相关的using

这是我的枚举代码:

namespace Zadify.Enums
{
    public enum Monsters
    {
        Zombie,
        Skeleton,
        Mummy,
        Robot,
        Demon
    }
}

这是我的课程,我需要从以下网址访问:

using System;
using System.Xml.Serialization;
using Zadify.Enums;

namespace Zadify
{
    [Serializable]
    public abstract class Goal
    {
        //Properties, Other methods

        public void AssignMonsterData(int rank)
        {
            var random = new Random();

            var monsterTypeValues = Enum.GetValues(typeof (Monsters)); //Gives the error on "Monsters" here
            var monster = (Monsters) monsterTypeValues.GetValue(random.Next(rank - 1)); //Also gives the error on this "Monsters"

            //Do other stuff
        }

我稍后在switch上执行monster,每次使用Monsters.ZombieMonsters.Skeleton等时似乎都没问题。我还有其他几个{ {1}} enums中的{1}}一切正常,事实上,我在这个类中使用了完全相同的代码。

到目前为止,我已尝试更改枚举Zadify.Enums并向新namespace添加using,将namespace复制到另一个文件中,清理项目并重建百倍。我正在使用Visual Studio 2010并编写Mono for Android应用程序,尽管这些类中没有Android代码。

在构建之前,Visual Studio似乎没有问题。事先,intellisense工作正常,如果我取出Monsters行,它会询问我是否想要引用它,然后按住ctrl +单击它会将我带到正确的文件中。

如果我还应提供其他任何代码,请与我们联系。

4 个答案:

答案 0 :(得分:1)

@ ZAD-Man,检查您的客户端配置文件设置。

  1. 右键单击项目
  2. 您应该在“应用程序”选项卡上
  3. 查看Target框架下拉列表
  4. 是否设为.Net Framework xx Client Profile?在Visual Studio默认我的项目之前,我遇到了一些奇怪的问题...尝试将其更改为.Net Framework 4而没有客户端配置文件部分,看看它是否有效。

    您正在寻找的屏幕与此类似:

    enter image description here

答案 1 :(得分:0)

它可能发生的原因是该类没有被添加到类库中。还要检查引用是否已添加此classlibrary。

答案 2 :(得分:0)

事实证明我只是犯了一个愚蠢的错误。我在另一个项目中添加了Goal.cs作为链接,但忘记链接我的枚举。另一个没有问题的唯一原因是因为它被Monsters抓住而没有看到其他人。由于它是一个链接,点击异常只是让我进入真正的Goal.cs,所以我认为问题出在该项目中,但如果我仔细观察,我会看到它是另一个项目。

答案 3 :(得分:0)

我有这个。问题是引用项目意外将其目标更改为x86,而枚举项目目标仍为Any CPU。