在XNA C中无法从外部类访问公共枚举#

时间:2012-11-13 19:05:03

标签: c# enums xna scope

我有一个GameServices类,它包含一个GameStates类的实例 GameStates类有一个名为GameState的公共枚举和一个名为CurrentGameState的静态var。

我的问题是,我可以从GameStates类访问CurrentGameState,但不是GameState枚举它自己,而是公开的。

GameServices类

using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using SpaceGame.UI;
using SpaceGame.Content;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;

namespace SpaceGame.Game
{
    public class GameServices
    {
        public static ContentLoader ContentLoaderService;
        public static UIHandler UIHandlerService;
        public static GameStates GameStatesService;

        public static void Initialize(ContentManager contentManager, GraphicsDevice graphicsDevice)
        {
             ContentLoaderService = new ContentLoader(contentManager);
             UIHandlerService = new UIHandler(graphicsDevice);
             GameStatesService = new GameStates();
        }
    }
}

GameStates类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SpaceGame.Game
{
    public class GameStates
    {
        public GameState CurrentGameState { get; set; }
        public enum GameState
        {
            Settings,
            Splash,
            SpaceShipyard
        }

        public GameStates()
        {
            CurrentGameState = GameState.Splash;
        }
    }
}

我做错了吗?

先谢谢,
标记

3 个答案:

答案 0 :(得分:3)

您应该可以访问它。由于您已在GameStates类中定义了它,因此该类型的全名将为:

SpaceGame.Game.GameStates.GameState

如果仍然无法解决,那么您可能会遇到名称空间问题,这应该始终有效:

global::SpaceGame.Game.GameStates.GameState

答案 1 :(得分:2)

如果您尝试从同一名称空间访问它,则必须执行类似

的操作
GameStates.GameState state = GameStates.GameState.Settings

如果你这样做,但它不起作用,我现在无法帮助你。

这是我做的一个例子。它为我编译。

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {

            A.AEnum a = A.AEnum.a;

        }
    }

    public class A
    {
        public enum AEnum
        {
            a,b
        }
    }
}

答案 2 :(得分:0)

基本上,不要在其他类中使用枚举(或类)。使用它们时有许多复杂情况。

另外,CurrentGameState不是静态的(至少在你提供的代码中),你说它应该是,所以改变它应该有效。