Don't use `_config["SettingName"]` strings in your code. It's brittle and hard to test. Use the Options Pattern to map your settings to real C# classes.
You can use **DataAnnotations** (like `[Required]`, `[Range]`) or **FluentValidation** on your Options classes. If the config is wrong, the app will fail to start. **Architect Tip:** Always 'Fail Fast' at startup rather than crashing later in the middle of a user's transaction.
Q: "Why is IOptionsSnapshot better for multi-threaded apps?"
Architect Answer: "IOptionsSnapshot is Scoped, meaning it remains consistent for the entire life of a single request. If a background config change happens while you are halfway through processing a long-running transaction, `Snapshot` ensures you keep using the 'Old' values until the transaction is done. This prevents inconsistent state bugs where half your logic uses Version A of a setting and the other half uses Version B."