Пример #1
0
        /// <summary>
        /// Send request
        /// </summary>
        public async Task SendAsync <TRequest>(TRequest model, string name = null)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = _endpointNameService.GetName <TRequest>();
            }

            await CapBus.PublishAsync(name, model);
        }
        private CapSubscribeAttribute GetCapSubscribeAttribute(Type requestType, Type handlerType)
        {
            string group = null;
            var    name  = _nameService.GetName(requestType);

            var requestAttribute = requestType.GetCustomAttributes(true).OfType <IOverrideSubscribe>().FirstOrDefault();

            if (requestAttribute != null)
            {
                if (requestAttribute.TryGetName(out var overName))
                {
                    name = overName;
                }

                if (requestAttribute.TryGetGroup(out var overGroup))
                {
                    group = overGroup;
                }
            }

            // Handler attribute overrides request attribute
            var handlerAttribute = handlerType.GetCustomAttributes(true).OfType <IOverrideSubscribe>().FirstOrDefault();

            if (handlerAttribute != null)
            {
                if (handlerAttribute.TryGetName(out var overName))
                {
                    name = overName;
                }

                if (handlerAttribute.TryGetGroup(out var overGroup))
                {
                    group = overGroup;
                }
            }

            return(new CapSubscribeAttribute(name)
            {
                Group = group
            });
        }