Table of Contents

Canonical Data Model Generator

[GenerateCanonicalDataModel] creates a typed CanonicalDataModel<TCanonical> factory from a source-to-canonical mapper.

[GenerateCanonicalDataModel(typeof(PartnerOrderDocument), typeof(CanonicalCommerceOrder), ModelName = "commerce-orders", AdapterName = "partner-orders")]
public static partial class PartnerOrderCanonicalModel
{
    [CanonicalDataModelMapper]
    private static CanonicalCommerceOrder Map(PartnerOrderDocument order) => new(order.ExternalOrderId, order.Amount, "USD");
}

The generated factory is parameterless, so applications can register the canonical model directly in IServiceCollection.

Diagnostics:

  • PKCDM001: host type must be partial.
  • PKCDM002: exactly one mapper is required.
  • PKCDM003: mapper signature is invalid.