/// <summary>
        /// Publish condition event
        /// </summary>
        /// <typeparam name="TObject">Data type</typeparam>
        /// <param name="eventSource">Event source type</param>
        /// <param name="eventType">Event type</param>
        /// <param name="query">Query</param>
        /// <param name="activationOptions">Activation options</param>
        /// <param name="callback">Callback</param>
        public static void PublishCondition <TObject>(Type eventSource, EventType eventType, IQuery query, ActivationOptions activationOptions = null, RepositoryEventCallback callback = null)
        {
            var eventHandlers = GetEventHandlers(eventSource, eventType, typeof(TObject));

            if (!eventHandlers.IsNullOrEmpty())
            {
                foreach (var handler in eventHandlers)
                {
                    ConditionEventHandler eventHandler = handler as ConditionEventHandler;
                    if (eventHandler == null)
                    {
                        continue;
                    }
                    eventHandler.Execute(query, activationOptions);
                }
            }
            callback?.Invoke(DataOperationEventExecuteResult.Empty);
        }
        /// <summary>
        /// publish condition
        /// </summary>
        /// <param name="eventSource">event source</param>
        /// <param name="eventType">event type</param>
        /// <param name="query">query</param>
        /// <param name="callback">callback</param>
        public static void PublishCondition <T>(Type eventSource, EventType eventType, IQuery query, RepositoryEventCallback callback = null)
        {
            var eventHandlers = GetEventHandlers(eventSource, eventType, typeof(T));

            if (eventHandlers.IsNullOrEmpty())
            {
                callback?.Invoke(DataOperationEventResult.Empty);
                return;
            }
            foreach (var handler in eventHandlers)
            {
                ConditionEventHandler eventHandler = handler as ConditionEventHandler;
                if (eventHandler == null)
                {
                    continue;
                }
                eventHandler.Execute(query);
            }
            callback?.Invoke(DataOperationEventResult.Empty);
        }