private MultipleCalculator CreateMultipleCalculator(string num) { //TODO:可能存在多线程操作问题 MultipleCalculator calculator; int numLen = num.Length; switch (numLen) { case 2: calculator = new TwoDigitMultipleCalculator(); break; case 3: calculator = new ThreeDigitMultipleCalculator(); break; case 4: calculator = new FourDigitMultipleCalculator(); break; case 5: if (new Regex(@"^\d{5}$").IsMatch(num)) calculator = new FiveDigitMultipleCalculator(); else calculator = new PL2MultipleCalculator(); break; case 8: calculator = new PL3MultipleCalculator(); break; default: throw new ApplicationException("Invalid digit!"); } return calculator; }
private MultipleCalculator CreateMultipleCalculator(int gpwId) { MultipleCalculator calculator; var gpw = LotterySystem.Current.FindGamePlayWay(gpwId); if (gpw == null) throw new ApplicationException("找不到游戏玩法!GPWId:" + gpwId); switch (gpw.GameType) { case GameType.TwoDigital: calculator = new TwoDigitMultipleCalculator(); break; case GameType.ThreeDigital: calculator = new ThreeDigitMultipleCalculator(); break; case GameType.FourDigital: calculator = new FourDigitMultipleCalculator(); break; case GameType.FiveDigital: calculator = new FiveDigitMultipleCalculator(); break; case GameType.PL2: calculator = new PL2MultipleCalculator(); break; case GameType.PL3: calculator = new PL3MultipleCalculator(); break; case GameType.A_B_PL2: case GameType.C_A_PL2: case GameType.B_C_PL2: calculator = new A_BPL2MultipleCalculator(); break; default: throw new ApplicationException("Invalid digit!"); } return calculator; }