예제 #1
0
        static void Main(string[] args)
        {
            Action <object> toDo  = new Action <object>(sInfo => Console.WriteLine("Receiver performed first action : {0} - {1} ", sInfo, DateTime.Now.ToLongTimeString()));
            Action <object> toDo1 = new Action <object>(sInfo =>
            {
                string ss = sInfo.ToString();
                if (sInfo is string)
                {
                    ss = (string)sInfo;
                }
                Console.WriteLine("Receiver performed second action : {0} ", DateTime.Now.AddSeconds(ss.Length).ToLongTimeString());
            });

            CustomReceiverFactory recFactory  = new CustomReceiverFactory();
            CustomCommandFactory  cmdFactory  = new CustomCommandFactory();
            CustomSenderFactory   sendFactory = new CustomSenderFactory();

            ICustomReceiver rec  = recFactory.Create(toDo);
            ICustomCommand  cmd  = cmdFactory.Create(rec);
            ICustomSender   send = sendFactory.Create(cmd);

            send.ExecuteCommand("step1");
            send.ExecuteCommand("step2");

            rec.DettachCommand();
            rec.AttachCommand(toDo1, null);

            send.ExecuteCommand("this is dummy 1");
            send.ExecuteCommand("this is dummy 2 again");

            Console.WriteLine("quit?");
            Console.ReadLine();
        }
예제 #2
0
        public ICustomCommand Create(params dynamic[] args)
        {
            ICustomReceiver  aReceiver  = args.OfType <ICustomReceiver>().FirstOrDefault();
            ICustomValidator aValidator = args.OfType <ICustomValidator>().FirstOrDefault();

            return(new CustomCommand(aReceiver, aValidator));
        }
        public void AttachTo(ICustomReceiver aReceiver, ICustomValidator aValidator = null)
        {
            Validator = (aValidator == null) ? new CustomValidator() : aValidator;

            if (!Validator.IsValidArgument(aReceiver))
            {
                throw new ArgumentNullException("Command receiver cannot be null");
            }
            Receiver = aReceiver;
        }
예제 #4
0
        public void AttachTo(ICustomReceiver aReceiver, ICustomValidator aValidator = null)
        {
            Validator = (aValidator == null) ? new CustomValidator() : aValidator;

            if (!Validator.IsValidArgument(aReceiver))
            {
                throw new ArgumentNullException("Command receiver cannot be null");
            }
            Receiver = aReceiver;
        }
 public void Dettach()
 {
     Receiver  = null;
     Validator = null;
 }