public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
            ServiceHost        host     = (ServiceHost)serviceHostBase;
            IFilterMapProvider provider = (IFilterMapProvider)host.SingletonInstance;

            foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers)
            {
                foreach (EndpointDispatcher endpointDispatcher in dispatcher.Endpoints)
                {
                    var inspector = new MessageInspector(provider.ProvideFilterMap());
                    endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector);
                }
            }
        }
        public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
            ServiceHost host = serviceHostBase as ServiceHost;

            if (host == null)
            {
                throw new NotSupportedException("ServiceHost derived host is required.");
            }
            IFilterMapProvider provider = host.SingletonInstance as IFilterMapProvider;

            if (provider == null)
            {
                throw new NotSupportedException(
                          "Service must be configured in singleton mode and singleton instance must implement IFilterMapProvider interface.");
            }
        }