@@ -10,26 +10,26 @@ public class TraceDecorator<TDecorated> : DispatchProxy where TDecorated : class
1010
1111 private ActivitySource _activity ;
1212 private TDecorated _decorated ;
13- private ISpanNamingSchema _namingSchema = new MethodFullNameSchema ( ) ;
13+ private IActivityNamingSchema _namingSchema = new MethodFullNameSchema ( ) ;
1414 private bool _decorateAllMethods = true ;
1515
1616 /// <summary>
1717 /// Creates a new TraceDecorator instance wrapping the specific object and implementing the TDecorated interface
1818 /// </summary>
1919 /// <param name="decorated"></param>
20- /// <param name="spanNamingSchema "></param>
20+ /// <param name="activityNamingSchema "></param>
2121 /// <param name="decorateAllMethods"></param>
2222 /// <returns></returns>
23- public static TDecorated Create ( TDecorated decorated , ISpanNamingSchema ? spanNamingSchema = null ,
23+ public static TDecorated Create ( TDecorated decorated , IActivityNamingSchema ? activityNamingSchema = null ,
2424 bool decorateAllMethods = true )
2525 {
2626 object proxy = Create < TDecorated , TraceDecorator < TDecorated > > ( ) ! ;
27- ( ( TraceDecorator < TDecorated > ) proxy ! ) . SetParameters ( decorated , spanNamingSchema , decorateAllMethods ) ;
27+ ( ( TraceDecorator < TDecorated > ) proxy ! ) . SetParameters ( decorated , activityNamingSchema , decorateAllMethods ) ;
2828
2929 return ( TDecorated ) proxy ;
3030 }
3131
32- private void SetParameters ( TDecorated decorated , ISpanNamingSchema ? spanNamingSchema , bool decorateAllMethods )
32+ private void SetParameters ( TDecorated decorated , IActivityNamingSchema ? spanNamingSchema , bool decorateAllMethods )
3333 {
3434 _decorated = decorated ;
3535 _activity = new ( _decorated ! . GetType ( ) . FullName ! ) ;
@@ -58,7 +58,7 @@ private void SetParameters(TDecorated decorated, ISpanNamingSchema? spanNamingSc
5858 throw ;
5959 }
6060 }
61-
61+
6262
6363 protected override object ? Invoke ( MethodInfo ? targetMethod , object ? [ ] ? args )
6464 {
@@ -69,6 +69,9 @@ private void SetParameters(TDecorated decorated, ISpanNamingSchema? spanNamingSc
6969 {
7070 var defaultSpanName = _namingSchema . GetSpanName ( _decorated ! . GetType ( ) , targetMethod ) ;
7171 using var activity = _activity . StartActivity ( activityAttribute ? . Name ?? defaultSpanName ) ;
72+
73+ InjectAttributes ( targetMethod , activity ) ;
74+
7275 if ( activityAttribute ? . RecordExceptions == false )
7376 {
7477 return InvokeDecoratedExecution ( targetMethod , args ) ;
@@ -81,6 +84,27 @@ private void SetParameters(TDecorated decorated, ISpanNamingSchema? spanNamingSc
8184 return InvokeDecoratedExecution ( targetMethod , args ) ;
8285
8386 }
84-
8587
88+ private void InjectAttributes ( MethodInfo targetMethod , Activity ? activity )
89+ {
90+ var methodActivityAttributes = targetMethod . GetCustomAttribute < ActivitiesAttributesAttribute > ( inherit : false ) ;
91+ var classActivityAttributes =
92+ _decorated . GetType ( ) . GetCustomAttribute < ActivitiesAttributesAttribute > ( inherit : false ) ;
93+
94+ if ( methodActivityAttributes != null )
95+ {
96+ foreach ( var key in classActivityAttributes . Attributes . Keys )
97+ {
98+ activity . AddTag ( key , methodActivityAttributes . Attributes [ key ] ) ;
99+ }
100+ }
101+
102+ if ( classActivityAttributes != null )
103+ {
104+ foreach ( var key in classActivityAttributes . Attributes . Keys )
105+ {
106+ activity . AddTag ( key , methodActivityAttributes . Attributes [ key ] ) ;
107+ }
108+ }
109+ }
86110}
0 commit comments