public void Inject(SegmentContext segmentContext, ICarrierHeaderCollection headerCollection) { var reference = segmentContext.References.FirstOrDefault(); var carrier = new Carrier(segmentContext.TraceId, segmentContext.SegmentId, segmentContext.Span.SpanId, segmentContext.ServiceInstanceId, reference?.EntryServiceInstanceId ?? segmentContext.ServiceInstanceId) { NetworkAddress = segmentContext.Span.Peer, EntryEndpoint = reference?.EntryEndpoint ?? segmentContext.Span.OperationName, ParentEndpoint = segmentContext.Span.OperationName, Sampled = segmentContext.Sampled }; foreach (var formatter in _carrierFormatters) { if (formatter.Enable) { headerCollection.Add(formatter.Key, formatter.Encode(carrier)); } } }