public override void Query(object sender, QueryExercise queryExercise)
 {
     if (ReferenceEquals(this, sender) == false &&
         queryExercise.WhatToQuery == QueryExercise.Argument.Attack)
     {
         queryExercise.Value++;
     }
     base.Query(sender, queryExercise);
 }
        public override void Query(object sender, QueryExercise queryExercise)
        {
            if (ReferenceEquals(this, sender))
            {
                switch (queryExercise.WhatToQuery)
                {
                case QueryExercise.Argument.Defense:
                    queryExercise.Value += BaseDefense;
                    break;

                case QueryExercise.Argument.Attack:
                    queryExercise.Value += BaseAttack;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else if (queryExercise.WhatToQuery == QueryExercise.Argument.Defense)
            {
                queryExercise.Value++;
            }
        }
 public abstract void Query(object sender, QueryExercise queryExercise);