Ejemplo n.º 1
0
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ParameterInfo            parameter = context.Parameter;
            ActivityTriggerAttribute trigger   = parameter.GetCustomAttribute <ActivityTriggerAttribute>(inherit: false);

            if (trigger == null)
            {
                return(Task.FromResult <ITriggerBinding>(null));
            }

            // Priority for getting the name is [ActivityTrigger], [FunctionName], method name
            string name = trigger.Activity;

            if (string.IsNullOrEmpty(name))
            {
                MemberInfo method = context.Parameter.Member;
                name = method.GetCustomAttribute <FunctionNameAttribute>()?.Name ?? method.Name;
            }

            // The activity name defaults to the method name.
            var activityName = new FunctionName(name);

            this.durableTaskConfig.RegisterActivity(activityName, null);
            var binding = new ActivityTriggerBinding(this, parameter, trigger, activityName);

            return(Task.FromResult <ITriggerBinding>(binding));
        }
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ParameterInfo            parameter = context.Parameter;
            ActivityTriggerAttribute trigger   = parameter.GetCustomAttribute <ActivityTriggerAttribute>(inherit: false);

            if (trigger == null)
            {
                return(Task.FromResult <ITriggerBinding>(null));
            }

            // The activity name defaults to the method name.
            string activityName = trigger.Activity ?? parameter.Member.Name;

            var binding = new ActivityTriggerBinding(
                this,
                parameter,
                trigger,
                activityName,
                trigger.Version);

            return(Task.FromResult <ITriggerBinding>(binding));
        }
        public ActivityTriggerAttributeBindingProvider(
            DurableTaskExtension durableTaskConfig,
            ExtensionConfigContext extensionContext,
            EndToEndTraceHelper traceHelper)
        {
            this.durableTaskConfig = durableTaskConfig;
            this.extensionContext  = extensionContext;
            this.traceHelper       = traceHelper;

            ActivityTriggerBinding.RegisterBindingRules(extensionContext.Config);
        }