Table of Contents

Sidecar Generator

[GenerateSidecar] creates a typed Sidecar<TRequest, TResponse> factory from before steps, after steps, and one primary handler.

[GenerateSidecar(typeof(OrderTelemetryRequest), typeof(OrderTelemetryResponse), SidecarName = "order-telemetry-sidecar")]
public static partial class OrderSidecars
{
    [SidecarBefore("trace-context")]
    private static void AddTrace(SidecarContext<OrderTelemetryRequest> ctx) => ctx.Items["trace-id"] = "trace-1";

    [SidecarAfter("telemetry")]
    private static void Capture(SidecarContext<OrderTelemetryRequest> ctx, OrderTelemetryResponse response) { }

    [SidecarHandler]
    private static OrderTelemetryResponse Submit(SidecarContext<OrderTelemetryRequest> ctx) => new("accepted", "trace-1");
}

Diagnostics:

  • PKSC001: host type must be partial.
  • PKSC002: at least one companion step and exactly one handler are required.
  • PKSC003: before, after, or handler signature is invalid.
  • PKSC004: companion step names must be unique.