protected override void OnHandle(Request request)
 {
     if (request.Category == RequestCategory.Category2)
       {
     // handle the request which category is Category2
     request.IsHandled = true;
       }
 }
 protected abstract void OnHandle(Request request);
        public void Handle(Request request)
        {
            OnHandle(request);

              if (!request.IsHandled)
              {
            if (_successor != null)
            {
              // pass request to successor
              _successor.Handle(request);
            }
              }
        }