Skip to content

Instantly share code, notes, and snippets.

@lmolkova
Last active January 11, 2022 19:31
Show Gist options
  • Select an option

  • Save lmolkova/b35efca6b4745f47d9d82a9c1599a7f6 to your computer and use it in GitHub Desktop.

Select an option

Save lmolkova/b35efca6b4745f47d9d82a9c1599a7f6 to your computer and use it in GitHub Desktop.
  • SDKs expose IAzureClientBuilder<EventHubProducerClient, EventHubProducerClientOptions> AddEventHubProducerClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration) where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>

    • Configuration format and binding to options are not defined in Azure SDKs
  • Implementation lives in Microsoft.Extensions.Azure

    • binding to options is done by microsoft.extensions.configuration through IConfiguration.Bind() and relies on *Options following microsoft.extensions.configuration conventions (i.e. properties)
    • options sources are whatever microsoft.extensions.configuration supports:
  • Configuration options names and structure exactly match Azure SDK (Core, client libs) *Options properties or reflective constructor parameters and are presumably not strictly consistent

    • per-client options are hierartical and have base ClientOptions
    • credentials are exception and mapping is defined here
      • configuration["credential"]
      • configuration["clientId"]
      • configuration["tenantId"]
      • configuration["clientSecret"]
      • configuration["clientCertificate"]
      • configuration["clientCertificateStoreName"]
      • configuration["clientCertificateStoreLocation"]
  • There are two layers:

    • global (defaults)
    • per-client
    • it's possible to define options per-client or global
  • Example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment