Start here. This is the direct spoken answer to practice first.
Why this question matters
Typed options turn configuration keys into an application contract. The choice of options interface controls when values are read and whether changes can appear while the process is running.
IOptions<T> provides one value for the application lifetime and works well for settings that are effectively fixed after startup. IOptionsSnapshot<T> is scoped and recomputes options once per request scope, while IOptionsMonitor<T> is singleton-friendly and can expose current values plus change notifications. I validate required settings with options validation and ValidateOnStart so a missing endpoint, invalid range, or malformed credential reference fails startup clearly instead of failing on the first request.