Esempio n. 1
0
        public Task <IBinding> TryCreateAsync(BindingProviderContext context)
        {
            ParameterInfo       parameter           = context.Parameter;
            ServiceBusAttribute serviceBusAttribute = parameter.GetCustomAttribute <ServiceBusAttribute>(inherit: false);

            if (serviceBusAttribute == null)
            {
                return(Task.FromResult <IBinding>(null));
            }

            string queueOrTopicName      = Resolve(serviceBusAttribute.QueueOrTopicName);
            IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName);

            path.ValidateContractCompatibility(context.BindingDataContract);

            IArgumentBinding <ServiceBusEntity> argumentBinding = _innerProvider.TryCreate(parameter);

            if (argumentBinding == null)
            {
                throw new InvalidOperationException("Can't bind ServiceBus to type '" + parameter.ParameterType + "'.");
            }

            string            connectionString = _accountProvider.ConnectionString;
            ServiceBusAccount account          = ServiceBusAccount.CreateFromConnectionString(connectionString);

            IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, path);

            return(Task.FromResult(binding));
        }