2013-04-22 109 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