Esempio n. 1
0
        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");
                }
            }
        }
Esempio n. 2
0
 /// <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);
     }
 }