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)); }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; var attribute = TypeUtility.GetResolvedAttribute <ServiceBusAttribute>(parameter); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } string queueOrTopicName = Resolve(attribute.QueueOrTopicName); IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName); ValidateContractCompatibility(path, context.BindingDataContract); IArgumentBinding <ServiceBusEntity> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't bind ServiceBus to type '{0}'.", parameter.ParameterType)); } attribute.Connection = Resolve(attribute.Connection); ServiceBusAccount account = new ServiceBusAccount(_options, _configuration, attribute); IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, _options, path, attribute, _messagingProvider); return(Task.FromResult <IBinding>(binding)); }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; ServiceBusAttribute attribute = parameter.GetCustomAttribute <ServiceBusAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } string queueOrTopicName = Resolve(attribute.QueueOrTopicName); IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName); ValidateContractCompatibility(path, context.BindingDataContract); IArgumentBinding <ServiceBusEntity> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't bind ServiceBus to type '{0}'.", parameter.ParameterType)); } string connectionName = ServiceBusAccount.GetAccountOverrideOrNull(context.Parameter); ServiceBusAccount account = new ServiceBusAccount { MessagingFactory = _config.MessagingProvider.CreateMessagingFactory(queueOrTopicName, connectionName), NamespaceManager = _config.MessagingProvider.CreateNamespaceManager(connectionName) }; IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, path, attribute.Access); return(Task.FromResult <IBinding>(binding)); }