@@ -110,51 +110,58 @@ protected virtual Collection<ParameterDescriptor> GetFunctionParameters(IFunctio
110
110
throw new ArgumentNullException ( "methodAttributes" ) ;
111
111
}
112
112
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
+ {
113
133
ParameterDescriptor triggerParameter = null ;
114
134
switch ( triggerMetadata . Type )
115
135
{
116
136
case BindingType . QueueTrigger :
117
- triggerParameter = ParseQueueTrigger ( ( QueueBindingMetadata ) triggerMetadata ) ;
137
+ triggerParameter = ParseQueueTrigger ( ( QueueBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
118
138
break ;
119
139
case BindingType . EventHubTrigger :
120
- triggerParameter = ParseEventHubTrigger ( ( EventHubBindingMetadata ) triggerMetadata ) ;
140
+ triggerParameter = ParseEventHubTrigger ( ( EventHubBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
121
141
break ;
122
142
case BindingType . BlobTrigger :
123
- triggerParameter = ParseBlobTrigger ( ( BlobBindingMetadata ) triggerMetadata , typeof ( Stream ) ) ;
143
+ triggerParameter = ParseBlobTrigger ( ( BlobBindingMetadata ) triggerMetadata , parameterType ?? typeof ( Stream ) ) ;
124
144
break ;
125
145
case BindingType . ServiceBusTrigger :
126
- triggerParameter = ParseServiceBusTrigger ( ( ServiceBusBindingMetadata ) triggerMetadata ) ;
146
+ triggerParameter = ParseServiceBusTrigger ( ( ServiceBusBindingMetadata ) triggerMetadata , parameterType ?? typeof ( string ) ) ;
127
147
break ;
128
148
case BindingType . TimerTrigger :
129
- triggerParameter = ParseTimerTrigger ( ( TimerBindingMetadata ) triggerMetadata , typeof ( TimerInfo ) ) ;
149
+ triggerParameter = ParseTimerTrigger ( ( TimerBindingMetadata ) triggerMetadata , parameterType ?? typeof ( TimerInfo ) ) ;
130
150
break ;
131
151
case BindingType . HttpTrigger :
132
- triggerParameter = ParseHttpTrigger ( ( HttpTriggerBindingMetadata ) triggerMetadata , typeof ( HttpRequestMessage ) ) ;
152
+ triggerParameter = ParseHttpTrigger ( ( HttpTriggerBindingMetadata ) triggerMetadata , parameterType ?? typeof ( HttpRequestMessage ) ) ;
133
153
break ;
134
154
case BindingType . ManualTrigger :
135
- triggerParameter = ParseManualTrigger ( triggerMetadata ) ;
155
+ triggerParameter = ParseManualTrigger ( triggerMetadata , parameterType ?? typeof ( string ) ) ;
136
156
break ;
137
157
case BindingType . ApiHubFileTrigger :
138
- triggerParameter = ParseApiHubFileTrigger ( ( ApiHubBindingMetadata ) triggerMetadata , typeof ( Stream ) ) ;
158
+ triggerParameter = ParseApiHubFileTrigger ( ( ApiHubBindingMetadata ) triggerMetadata , parameterType ?? typeof ( Stream ) ) ;
139
159
break ;
140
160
}
141
161
142
- ApplyMethodLevelAttributes ( functionMetadata , triggerMetadata , methodAttributes ) ;
143
-
144
- Collection < ParameterDescriptor > parameters = new Collection < ParameterDescriptor > ( ) ;
145
162
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 ) ) ) ;
153
163
154
- // Add ExecutionContext to provide access to InvocationId, etc.
155
- parameters . Add ( new ParameterDescriptor ( "context" , typeof ( ExecutionContext ) ) ) ;
156
-
157
- return parameters ;
164
+ return triggerParameter ;
158
165
}
159
166
160
167
protected static void ApplyMethodLevelAttributes ( FunctionMetadata functionMetadata , BindingMetadata triggerMetadata , Collection < CustomAttributeBuilder > methodAttributes )
0 commit comments