public static T SendReceive <T>( object redisNativeClient, byte[][] cmdWithBinaryArgs, object fn, object completePipelineFn, bool sendWithoutRead, int opCode, int mdToken, long moduleVersionPtr) { if (redisNativeClient == null) { throw new ArgumentNullException(nameof(redisNativeClient)); } Func <object, byte[][], object, object, bool, T> instrumentedMethod; try { var instrumentedType = redisNativeClient.GetInstrumentedType(RedisNativeClient); instrumentedMethod = MethodBuilder <Func <object, byte[][], object, object, bool, T> > .Start(moduleVersionPtr, mdToken, opCode, nameof(SendReceive)) .WithConcreteType(instrumentedType) .WithParameters(cmdWithBinaryArgs, fn, completePipelineFn, sendWithoutRead) .WithMethodGenerics(typeof(T)) .WithNamespaceAndNameFilters(ClrNames.Ignore, "System.Byte[][]", "System.Func`1", "System.Action`1", ClrNames.Bool) .Build(); } catch (Exception ex) { Log.ErrorRetrievingMethod( exception: ex, moduleVersionPointer: moduleVersionPtr, mdToken: mdToken, opCode: opCode, instrumentedType: RedisNativeClient, methodName: nameof(SendReceive), instanceType: redisNativeClient.GetType().AssemblyQualifiedName); throw; } RedisNativeClientData clientData = redisNativeClient.As <RedisNativeClientData>(); using (var scope = RedisHelper.CreateScope( Tracer.Instance, IntegrationName, clientData.Host ?? string.Empty, clientData.Port.ToString(CultureInfo.InvariantCulture), GetRawCommand(cmdWithBinaryArgs))) { try { return(instrumentedMethod(redisNativeClient, cmdWithBinaryArgs, fn, completePipelineFn, sendWithoutRead)); } catch (Exception ex) { scope?.Span?.SetException(ex); throw; } } }