public void PatternMatching() { var terminals = new TerminalBase[] { new StandAloneTerminal(hasPrinter: false), new StandAloneTerminal(hasPrinter: true), new CashRegisteredTerminal(), new MobileTerminal(), null }; const string Text = "Thanks for your purchase"; foreach (var terminal in terminals) { switch (terminal) { case StandAloneTerminal t when t.HasPrinter: t.PrintReceipt(Text); break; case StandAloneTerminal t when !t.HasPrinter: t.SendMail(Text); break; case CashRegisteredTerminal t: t.NotifyCashRegister(); break; case MobileTerminal t: t.NotifyPhoneApp(Text); break; case null: Console.WriteLine("Terminal is null."); break; default: throw new InvalidOperationException("Terminal type is not supported"); } } }
/// <summary> /// 方法说明:根据触角SDK发送数据获取SDK发送数据 /// </summary> /// <param name="antsdksend"></param> /// <returns></returns> internal static SdkMsTerminalBase GetSdkSend(TerminalBase antsdksend) { try { var hearbeatantsdksend = antsdksend as HeartBeat; if (hearbeatantsdksend != null) { var sdksend = hearbeatantsdksend.GetSdkSend(); return(sdksend); } var offlineantsdksend = antsdksend as QuestOffLine; if (offlineantsdksend != null) { var sdksend = offlineantsdksend.GetSdkSend(); return(sdksend); } //非终端类型的返回空 return(null); } catch (Exception ex) { LogHelper.WriteError( $"[AntSdkSendMsg.Terminal.GetSdkSend]:{Environment.NewLine}{ex.Message}{ex.StackTrace}"); return(null); } }