我在我的一个项目中面临实时业务问题。方案是我必须允许用户根据当前的应用程序状态进行更改。我将简要介绍以下流程,
申请阶段1,阶段2,阶段3和阶段4共有4个阶段,并且有一些与上述阶段相关的状态,如A,B,C,D,E,F,G等。
基于状态,我必须允许在每个阶段进行更改,是允许编辑的各个阶段和状态,
我面临的问题是有没有办法通过将阶段和状态传递给c#中的集合来获取可编辑指标,如果该状态对于传递的阶段是可编辑的,那么它应该返回true或者否则为
这可以通过C#Dictionary或Hashtable吗?
答案 0 :(得分:1)
你的意思是这样的:
private static readonly HashSet<char>[] _allowed =
{
new HashSet<char> { 'A', 'B', 'C' },
new HashSet<char> { 'A', 'C', 'G' },
new HashSet<char> { 'F', 'E' },
new HashSet<char> { 'A', 'B', 'C', 'D', 'E' },
};
bool Allowed(int stage, char status)
{
// Assume stage is 1-based, so subtract 1 for array index
return _allowed[stage - 1].Contains(status);
}
答案 1 :(得分:0)
在c#中评估适当的集合行为之后,我决定通过使用字典来实现这一目标
IDictionary<string, HashSet<string>> sets = new Dictionary<string, HashSet<string>>();
sets.Add("Stage 1", new HashSet<string>{ "A","B","C"});
sets.Add("Stage 2", new HashSet<string>{ "D","E"});
public static bool GetAllowed(string stage,string status, IDictionary<string,HashSet<string>> allowedSets)
{
return allowedSets[stage].Contains(status);
}
Console.WriteLine(GetAllowed("Stage 1", "A", sets)); // returns true
Console.WriteLine(GetAllowed("Stage 2", "A", sets)); //returns false