@@ -110,51 +110,58 @@ protected virtual Collection<ParameterDescriptor> GetFunctionParameters(IFunctio
110110 throw new ArgumentNullException ( "methodAttributes" ) ;
111111 }
112112
113+ ApplyMethodLevelAttributes ( functionMetadata , triggerMetadata , methodAttributes ) ;
114+
115+ Collection < ParameterDescriptor > parameters = new Collection < ParameterDescriptor > ( ) ;
116+ ParameterDescriptor triggerParameter = CreateTriggerParameter ( triggerMetadata ) ;
117+ parameters . Add ( triggerParameter ) ;
118+
119+ // Add a TraceWriter for logging
120+ parameters . Add ( new ParameterDescriptor ( "log" , typeof ( TraceWriter ) ) ) ;
121+
122+ // Add an IBinder to support the binding programming model
123+ parameters . Add ( new ParameterDescriptor ( "binder" , typeof ( IBinder ) ) ) ;
124+
125+ // Add ExecutionContext to provide access to InvocationId, etc.
126+ parameters . Add ( new ParameterDescriptor ( "context" , typeof ( ExecutionContext ) ) ) ;
127+
128+ return parameters ;
129+ }
130+
131+ protected virtual ParameterDescriptor CreateTriggerParameter ( BindingMetadata triggerMetadata , Type parameterType = null )
132+ {
113133 ParameterDescriptor triggerParameter = null ;
114134 switch ( triggerMetadata . Type )
115135 {
116136 case BindingType . QueueTrigger :
117- triggerParameter = ParseQueueTrigger ( ( QueueBindingMetadata ) triggerMetadata ) ;
137+ triggerParameter = ParseQueueTrigger ( ( QueueBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
118138 break ;
119139 case BindingType . EventHubTrigger :
120- triggerParameter = ParseEventHubTrigger ( ( EventHubBindingMetadata ) triggerMetadata ) ;
140+ triggerParameter = ParseEventHubTrigger ( ( EventHubBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
121141 break ;
122142 case BindingType . BlobTrigger :
123- triggerParameter = ParseBlobTrigger ( ( BlobBindingMetadata ) triggerMetadata , typeof ( Stream ) ) ;
143+ triggerParameter = ParseBlobTrigger ( ( BlobBindingMetadata ) triggerMetadata , parameterType ?? typeof ( Stream ) ) ;
124144 break ;
125145 case BindingType . ServiceBusTrigger :
126- triggerParameter = ParseServiceBusTrigger ( ( ServiceBusBindingMetadata ) triggerMetadata ) ;
146+ triggerParameter = ParseServiceBusTrigger ( ( ServiceBusBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
127147 break ;
128148 case BindingType . TimerTrigger :
129- triggerParameter = ParseTimerTrigger ( ( TimerBindingMetadata ) triggerMetadata , typeof ( TimerInfo ) ) ;
149+ triggerParameter = ParseTimerTrigger ( ( TimerBindingMetadata ) triggerMetadata , parameterType ?? typeof ( TimerInfo ) ) ;
130150 break ;
131151 case BindingType . HttpTrigger :
132- triggerParameter = ParseHttpTrigger ( ( HttpTriggerBindingMetadata ) triggerMetadata , typeof ( HttpRequestMessage ) ) ;
152+ triggerParameter = ParseHttpTrigger ( ( HttpTriggerBindingMetadata ) triggerMetadata , parameterType ?? typeof ( HttpRequestMessage ) ) ;
133153 break ;
134154 case BindingType . ManualTrigger :
135- triggerParameter = ParseManualTrigger ( triggerMetadata ) ;
155+ triggerParameter = ParseManualTrigger ( triggerMetadata , parameterType ?? typeof ( string ) ) ;
136156 break ;
137157 case BindingType . ApiHubFileTrigger :
138- triggerParameter = ParseApiHubFileTrigger ( ( ApiHubBindingMetadata ) triggerMetadata , typeof ( Stream ) ) ;
158+ triggerParameter = ParseApiHubFileTrigger ( ( ApiHubBindingMetadata ) triggerMetadata , parameterType ?? typeof ( Stream ) ) ;
139159 break ;
140160 }
141161
142- ApplyMethodLevelAttributes ( functionMetadata , triggerMetadata , methodAttributes ) ;
143-
144- Collection < ParameterDescriptor > parameters = new Collection < ParameterDescriptor > ( ) ;
145162 triggerParameter . IsTrigger = true ;
146- parameters . Add ( triggerParameter ) ;
147-
148- // Add a TraceWriter for logging
149- parameters . Add ( new ParameterDescriptor ( "log" , typeof ( TraceWriter ) ) ) ;
150-
151- // Add an IBinder to support the binding programming model
152- parameters . Add ( new ParameterDescriptor ( "binder" , typeof ( IBinder ) ) ) ;
153163
154- // Add ExecutionContext to provide access to InvocationId, etc.
155- parameters . Add ( new ParameterDescriptor ( "context" , typeof ( ExecutionContext ) ) ) ;
156-
157- return parameters ;
164+ return triggerParameter ;
158165 }
159166
160167 protected static void ApplyMethodLevelAttributes ( FunctionMetadata functionMetadata , BindingMetadata triggerMetadata , Collection < CustomAttributeBuilder > methodAttributes )
0 commit comments