/// <summary>
        /// Initializes a new instance of the <see cref="SecretStoreSource"/> class.
        /// </summary>
        /// <param name="createSecretProvider">The function to create a secret provider to add to the secret store.</param>
        /// <param name="options">The optional options to configure the <see cref="ISecretProvider"/>. in the secret store.</param>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="createSecretProvider"/> is <c>null</c>.</exception>
        public SecretStoreSource(
            Func <IServiceProvider, ISecretProvider> createSecretProvider,
            SecretProviderOptions options)
        {
            Guard.NotNull(createSecretProvider, nameof(createSecretProvider), "Requires a function to create an secret provider instance to register it in the secret store");

            _createSecretProvider = createSecretProvider;

            Options = options ?? new SecretProviderOptions();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SecretStoreSource"/> class.
        /// </summary>
        /// <param name="secretProvider">The secret provider to add to the secret store.</param>
        /// <param name="options">The optional options to configure the <see cref="ISecretProvider"/>. in the secret store.</param>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="secretProvider"/> is <c>null</c>.</exception>
        public SecretStoreSource(ISecretProvider secretProvider, SecretProviderOptions options)
        {
            Guard.NotNull(secretProvider, nameof(secretProvider), "Requires a secret provider instance to register it in the secret store");

            _secretProvider = secretProvider;

            if (secretProvider is ICachedSecretProvider cachedSecretProvider)
            {
                CachedSecretProvider = cachedSecretProvider;
            }

            Options = options ?? new SecretProviderOptions();
        }