55using System . Reflection ;
66using System . Text ;
77using Autofac . Core . Resolving . Pipeline ;
8+ using Autofac . Diagnostics ;
89using Autofac . Util ;
910
1011namespace Autofac . Core . Activators . Reflection ;
@@ -218,12 +219,24 @@ private void UseSingleConstructorActivation(IResolvePipelineBuilder pipelineBuil
218219 {
219220 CheckNotDisposed ( ) ;
220221
222+ var recordMetrics = AutofacMetrics . MetricsEnabled ;
223+ ValueStopwatch instrumentationTimer = default ;
224+ if ( recordMetrics )
225+ {
226+ instrumentationTimer = ValueStopwatch . StartNew ( ) ;
227+ }
228+
221229 var instance = boundConstructor . Instantiate ( ) ;
222230
223231 InjectProperties ( instance , context , boundConstructor , GetAllParameters ( context . Parameters ) ) ;
224232
225233 context . Instance = instance ;
226234
235+ if ( recordMetrics )
236+ {
237+ AutofacMetrics . RecordReflectionActivation ( _implementationType , instrumentationTimer . ElapsedTicks ) ;
238+ }
239+
227240 next ( context ) ;
228241 } ) ;
229242 }
@@ -233,6 +246,13 @@ private void UseSingleConstructorActivation(IResolvePipelineBuilder pipelineBuil
233246 {
234247 CheckNotDisposed ( ) ;
235248
249+ var recordMetrics = AutofacMetrics . MetricsEnabled ;
250+ ValueStopwatch instrumentationTimer = default ;
251+ if ( recordMetrics )
252+ {
253+ instrumentationTimer = ValueStopwatch . StartNew ( ) ;
254+ }
255+
236256 var prioritizedParameters = GetAllParameters ( context . Parameters ) ;
237257
238258 var bound = singleConstructor . Bind ( prioritizedParameters , context ) ;
@@ -248,6 +268,11 @@ private void UseSingleConstructorActivation(IResolvePipelineBuilder pipelineBuil
248268
249269 context . Instance = instance ;
250270
271+ if ( recordMetrics )
272+ {
273+ AutofacMetrics . RecordReflectionActivation ( _implementationType , instrumentationTimer . ElapsedTicks ) ;
274+ }
275+
251276 next ( context ) ;
252277 } ) ;
253278 }
@@ -277,6 +302,13 @@ private object ActivateInstance(IComponentContext context, IEnumerable<Parameter
277302
278303 CheckNotDisposed ( ) ;
279304
305+ var recordMetrics = AutofacMetrics . MetricsEnabled ;
306+ ValueStopwatch instrumentationTimer = default ;
307+ if ( recordMetrics )
308+ {
309+ instrumentationTimer = ValueStopwatch . StartNew ( ) ;
310+ }
311+
280312 var prioritizedParameters = GetAllParameters ( parameters ) ;
281313
282314 var allBindings = GetAllBindings ( _constructorBinders ! , context , prioritizedParameters ) ;
@@ -295,6 +327,11 @@ private object ActivateInstance(IComponentContext context, IEnumerable<Parameter
295327
296328 InjectProperties ( instance , context , selectedBinding , prioritizedParameters ) ;
297329
330+ if ( recordMetrics )
331+ {
332+ AutofacMetrics . RecordReflectionActivation ( _implementationType , instrumentationTimer . ElapsedTicks ) ;
333+ }
334+
298335 return instance ;
299336 }
300337
0 commit comments