@@ -0,0 +1,19 @@
+using System;
+using Datadog.Trace.ClrProfiler.Interfaces;
+using Datadog.Trace.Interfaces;
+
+namespace Datadog.Trace.ClrProfiler.Services
+{
+    internal class ActionBlockSpanDecorator : ISpanDecorator
+    {
+        private readonly Action<ISpan> _block;
+
+        public ActionBlockSpanDecorator(Action<ISpan> block)
+        {
+            _block = block;
+        }
+
+        public void Decorate(ISpan span)
+            => _block(span);
+    }
+}
I'm concerned that using delegates will add overhead that we can easily avoid. Invoking delegates is slower than calling a method directly, and we need to allocate the `Action<T>` objects as well.