我的主要问题是我有四个枚举:
public enum Main : int { Loading = 0, Main, PageSelect, Achievements, Play, Settings, Store }
public enum Play : int { DarkLayer = 0, Main, AddCharacter, AddBackground, AddEffect, TakePhoto, VideoRecord, AddFilter, VideoSave}
public enum Settings : int { Main = 0, Tutorial, ParentalControl }
public enum Store : int { Main = 0, Pages, AllBookUnlocked, InsertCode, ConectionFailed, ErrorCode, TransactionFailed, BoughtPage, Send }
每个代表我的应用程序的屏幕,我用它们在屏幕之间切换。我的问题是我需要创建一个历史回溯,但由于枚举有不同的类型(主要,播放,设置和存储),我不知道如何将它们存储在一个历史记录中。
例如,如果我在Main.Main屏幕中并且我去Play.Main,我需要将它们存储在一种堆栈中以返回Main.Main。我不知道是否可以这样做(我不这么认为),但我只想确定。
答案 0 :(得分:1)
你可以这样做:
var stack = new Stack<Enum>();
stack.Push(Main.PageSelect);
var value = stack.Pop();
if (value is Main)
{
Main page = (Main)value;
// etc
}
答案 1 :(得分:-1)
再创建一个枚举来存储您需要的所有枚举:
public enum MyEnums : int { Main = 0, Play, Settings, Store }
然后你可以像这样创建一个Stack
:
var stack = new Stack<Tuple<MyEnums, int>>();
stack.Add(new Tuple<MyEnums, int>(MyEnums.Main, Main.PageSelect)); // This will be casted to int
var tuple = stack.Pop();
switch(tuple.Item1)
{
case MyEnums.Main:
var ourPage = (Main) tuple.Item2; // Cast back to an appropriate enum
return RedirectToAction(...);
...
}