2013-04-22 93 views
1

我正在用C#制作2D游戏#& XNA。我正在进行保存和加载,所有的数据都存储在文本文件中。C#:从文本文件读取枚举

每个精灵都有一个状态:

public enum SpriteState 
{ 
    Alive, 
    Dead, 
    Chasing, 
    Sleeping, 
    Waiting 
} 

当保存我只是在执行这行代码:

StreamWriter.WriteLine(gameState); 

现在,当我加载游戏我遇到阅读该文本文件的行存储它在一个字符串变量,并执行以下几乎足够:

string inType = StreamReader.ReadLine(); 

if(inType == "Alive") 
    //Set the sprites state to alive 
else if(inType == "Dead") 
    //Set the sprites state to alive 

等等...所以我的问题是:是否有从文本文件中读取枚举类型并分配它的更好方法?

非常感谢

回答

8

您正在寻找

(SpriteState) Enum.Parse(typeof(SpriteState), inType) 

这将解析字符串转换为枚举值。

您可能还希望有一个Dictionary<SpriteState, Action<...>>映射状态到采取适当操作的委托(lambda表达式)。

+0

这是辉煌的,三江源!没有意识到你可以解析一个枚举 - 将在时间限制用完时接受你的答案! – 2013-04-22 13:43:13

4

试试这个:

Enum.Parse(typeof(SpriteState), yourString); 

您也可以使用这个方法:

public static T ParseEnum<T>(string value) 
{ 
    return (T)Enum.Parse(typeof(T), value, true); 
} 
+0

太棒了,谢谢!没有意识到你可以解析一个枚举 - 将在时间限制用完时接受你的答案! – 2013-04-22 13:43:46