diff --git a/src/Microsoft.Azure.AppConfiguration.AspNetCore/AzureAppConfigurationRefreshExtensions.cs b/src/Microsoft.Azure.AppConfiguration.AspNetCore/AzureAppConfigurationRefreshExtensions.cs index 671c98400..523fba9e4 100644 --- a/src/Microsoft.Azure.AppConfiguration.AspNetCore/AzureAppConfigurationRefreshExtensions.cs +++ b/src/Microsoft.Azure.AppConfiguration.AspNetCore/AzureAppConfigurationRefreshExtensions.cs @@ -25,7 +25,7 @@ public static IApplicationBuilder UseAzureAppConfiguration(this IApplicationBuil throw new ArgumentNullException(nameof(builder)); } - IConfigurationRefresherProvider refresherProvider = (IConfigurationRefresherProvider)builder.ApplicationServices.GetService(typeof(IConfigurationRefresherProvider)); + IConfigurationRefresherProvider? refresherProvider = (IConfigurationRefresherProvider?)builder.ApplicationServices.GetService(typeof(IConfigurationRefresherProvider)); // Verify if AddAzureAppConfiguration was done before calling UseAzureAppConfiguration. // We use the IConfigurationRefresherProvider to make sure if the required services were added. diff --git a/src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj b/src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj index 72e540879..8b64421ab 100644 --- a/src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj +++ b/src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj @@ -3,6 +3,7 @@ net8.0;net9.0 + enable Microsoft.Azure.AppConfiguration.AspNetCore allows developers to use Microsoft Azure App Configuration service as a configuration source in their applications. This package adds additional features for ASP.NET Core applications to the existing package Microsoft.Extensions.Configuration.AzureAppConfiguration. true false diff --git a/src/Microsoft.Azure.AppConfiguration.Functions.Worker/AzureAppConfigurationRefreshExtensions.cs b/src/Microsoft.Azure.AppConfiguration.Functions.Worker/AzureAppConfigurationRefreshExtensions.cs index 2623d59c3..a167a74a4 100644 --- a/src/Microsoft.Azure.AppConfiguration.Functions.Worker/AzureAppConfigurationRefreshExtensions.cs +++ b/src/Microsoft.Azure.AppConfiguration.Functions.Worker/AzureAppConfigurationRefreshExtensions.cs @@ -24,7 +24,7 @@ public static class AzureAppConfigurationRefreshExtensions public static IFunctionsWorkerApplicationBuilder UseAzureAppConfiguration(this IFunctionsWorkerApplicationBuilder builder) { IServiceProvider serviceProvider = builder.Services.BuildServiceProvider(); - IConfigurationRefresherProvider refresherProvider = serviceProvider.GetService(); + IConfigurationRefresherProvider? refresherProvider = serviceProvider.GetService(); // Verify if AddAzureAppConfiguration was done before calling UseAzureAppConfiguration. // We use the IConfigurationRefresherProvider to make sure if the required services were added. diff --git a/src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj b/src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj index 2531bbe3e..5300ea1ff 100644 --- a/src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj +++ b/src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj @@ -3,6 +3,7 @@ net8.0;net9.0 + enable Microsoft.Azure.AppConfiguration.Functions.Worker allows developers to use the Microsoft Azure App Configuration service as a configuration source in their applications. This package adds additional features to the existing package Microsoft.Extensions.Configuration.AzureAppConfiguration for .NET Azure Functions running in an isolated process. true false diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationKeyVaultOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationKeyVaultOptions.cs index cca16df80..880efc2f4 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationKeyVaultOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationKeyVaultOptions.cs @@ -18,7 +18,7 @@ public class AzureAppConfigurationKeyVaultOptions // This allows the provider to throw a KeyVaultReferenceException with all relevant information and halt startup instead of timing out. private const int KeyVaultMaxRetries = 6; - internal TokenCredential Credential; + internal TokenCredential? Credential; internal SecretClientOptions ClientOptions = new SecretClientOptions { Retry = { @@ -26,7 +26,7 @@ public class AzureAppConfigurationKeyVaultOptions } }; internal List SecretClients = new List(); - internal Func> SecretResolver; + internal Func>? SecretResolver; internal Dictionary SecretRefreshIntervals = new Dictionary(); internal TimeSpan? DefaultSecretRefreshInterval = null; internal bool IsKeyVaultRefreshConfigured = false; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationOptions.cs index e5b6e2585..9a7e94a7b 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationOptions.cs @@ -51,19 +51,19 @@ public class AzureAppConfigurationOptions /// /// The list of connection strings used to connect to an Azure App Configuration store and its replicas. /// - internal IEnumerable ConnectionStrings { get; private set; } + internal IEnumerable? ConnectionStrings { get; private set; } /// /// The list of endpoints of an Azure App Configuration store. /// If this property is set, the property also needs to be set. /// - internal IEnumerable Endpoints { get; private set; } + internal IEnumerable? Endpoints { get; private set; } /// /// The credential used to connect to the Azure App Configuration. /// If this property is set, the property also needs to be set. /// - internal TokenCredential Credential { get; private set; } + internal TokenCredential? Credential { get; private set; } /// /// A collection of specified by user. @@ -96,7 +96,7 @@ public class AzureAppConfigurationOptions internal IEnumerable Adapters { get => _adapters; - set => _adapters = value?.ToList(); + set => _adapters = value?.ToList() ?? new List(); } /// @@ -112,17 +112,17 @@ internal IEnumerable Adapters /// /// For use in tests only. An optional configuration client manager that can be used to provide clients to communicate with Azure App Configuration. /// - internal IConfigurationClientManager ClientManager { get; set; } + internal IConfigurationClientManager? ClientManager { get; set; } /// /// For use in tests only. An optional class used to process pageable results from Azure App Configuration. /// - internal IConfigurationSettingPageIterator ConfigurationSettingPageIterator { get; set; } + internal IConfigurationSettingPageIterator? ConfigurationSettingPageIterator { get; set; } /// /// For use in tests only. An optional activity source name to specify the activity source used by the configuration provider. /// - internal string ActivitySourceName { get; set; } + internal string? ActivitySourceName { get; set; } /// /// An optional timespan value to set the minimum backoff duration to a value other than the default. @@ -157,7 +157,7 @@ internal IEnumerable Adapters /// /// Client factory that is responsible for creating instances of ConfigurationClient. /// - internal IAzureClientFactory ClientFactory { get; private set; } + internal IAzureClientFactory? ClientFactory { get; private set; } /// /// Initializes a new instance of the class. @@ -215,7 +215,7 @@ public AzureAppConfigurationOptions SetClientFactory(IAzureClientFactory - public AzureAppConfigurationOptions Select(string keyFilter, string labelFilter = LabelFilter.Null, IEnumerable tagFilters = null) + public AzureAppConfigurationOptions Select(string keyFilter, string labelFilter = LabelFilter.Null, IEnumerable? tagFilters = null) { if (string.IsNullOrEmpty(keyFilter)) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index fc92d1290..23f0a5df5 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using Azure; using Azure.Data.AppConfiguration; using Microsoft.Extensions.Configuration.AzureAppConfiguration.SnapshotReference; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationSource.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationSource.cs index 83d20e2fb..f26894de2 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationSource.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationSource.cs @@ -28,7 +28,7 @@ public AzureAppConfigurationSource(Action optionsI public IConfigurationProvider Build(IConfigurationBuilder builder) { - IConfigurationProvider provider = null; + IConfigurationProvider? provider = null; try { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultKeyValueAdapter.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultKeyValueAdapter.cs index 0498ba09e..0bd23175f 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultKeyValueAdapter.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultKeyValueAdapter.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using Azure; using Azure.Data.AppConfiguration; using Azure.Security.KeyVault.Secrets; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultSecretProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultSecretProvider.cs index 57505ff95..762d384a4 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultSecretProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/AzureKeyVaultSecretProvider.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using Azure.Security.KeyVault.Secrets; using Microsoft.Extensions.Configuration.AzureAppConfiguration.Extensions; using System; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/CachedKeyVaultSecret.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/CachedKeyVaultSecret.cs index ab09311ed..661033fe9 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/CachedKeyVaultSecret.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureKeyVaultReference/CachedKeyVaultSecret.cs @@ -10,7 +10,7 @@ internal class CachedKeyVaultSecret ///// ///// The value of the Key Vault secret. ///// - public string SecretValue { get; set; } + public string? SecretValue { get; set; } /// /// The time when this secret should be reloaded from Key Vault. @@ -30,9 +30,9 @@ internal class CachedKeyVaultSecret /// /// The source for this secret. /// - public Uri SourceId { get; } + public Uri? SourceId { get; } - public CachedKeyVaultSecret(string secretValue = null, Uri sourceId = null, DateTimeOffset? refreshAt = null, int refreshAttempts = 0) + public CachedKeyVaultSecret(string? secretValue = null, Uri? sourceId = null, DateTimeOffset? refreshAt = null, int refreshAttempts = 0) { SecretValue = secretValue; RefreshAt = refreshAt; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/ConfigurationClientManager.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/ConfigurationClientManager.cs index 61840d036..c652d4ee0 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/ConfigurationClientManager.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/ConfigurationClientManager.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using Azure.Data.AppConfiguration; using DnsClient; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/EndpointComparer.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/EndpointComparer.cs index 362190ed9..42114695f 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/EndpointComparer.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/EndpointComparer.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration { internal class EndpointComparer : IEqualityComparer { - public bool Equals(Uri endpoint1, Uri endpoint2) + public bool Equals(Uri? endpoint1, Uri? endpoint2) { return Uri.Compare(endpoint1, endpoint2, diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Exceptions/KeyVaultReferenceException.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Exceptions/KeyVaultReferenceException.cs index 7d549a068..7a69a293a 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Exceptions/KeyVaultReferenceException.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Exceptions/KeyVaultReferenceException.cs @@ -34,26 +34,26 @@ public KeyVaultReferenceException(string message, /// /// The key of the Key Vault reference that caused the exception. /// - public string Key { get; set; } + public string? Key { get; set; } /// /// The label of the Key Vault reference that caused the exception. /// - public string Label { get; set; } + public string? Label { get; set; } /// /// The etag of the Key Vault reference that caused the exception. /// - public string Etag { get; set; } + public string? Etag { get; set; } /// /// The secret identifier used by the Azure Key Vault reference that caused the exception. /// - public string SecretIdentifier { get; set; } + public string? SecretIdentifier { get; set; } /// /// The error code, if available, describing the cause of the exception. /// - public string ErrorCode { get; set; } + public string? ErrorCode { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/EventGridEventExtensions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/EventGridEventExtensions.cs index ee9043248..d9d53c376 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/EventGridEventExtensions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/EventGridEventExtensions.cs @@ -20,7 +20,7 @@ public static class EventGridEventExtensions /// EventGridEvent from EventGrid /// If this method returns true, the pushNotification object contains details populated from eventGridEvent. If this method returns false, the pushNotification object is null. /// - public static bool TryCreatePushNotification(this EventGridEvent eventGridEvent, out PushNotification pushNotification) + public static bool TryCreatePushNotification(this EventGridEvent eventGridEvent, out PushNotification? pushNotification) { pushNotification = null; @@ -29,9 +29,9 @@ public static bool TryCreatePushNotification(this EventGridEvent eventGridEvent, return false; } - if (Uri.TryCreate(eventGridEvent.Subject, UriKind.Absolute, out Uri resourceUri)) + if (Uri.TryCreate(eventGridEvent.Subject, UriKind.Absolute, out Uri? resourceUri)) { - string syncToken = null; + string? syncToken = null; try { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/StringExtensions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/StringExtensions.cs index 1bc69ae90..07c665504 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/StringExtensions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/StringExtensions.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.Extensions { internal static class StringExtensions { - public static bool TryParseContentType(this string contentTypeString, out ContentType contentType) + public static bool TryParseContentType(this string contentTypeString, out ContentType? contentType) { contentType = null; @@ -35,7 +35,7 @@ public static bool TryParseContentType(this string contentTypeString, out Conten } } - public static string NormalizeNull(this string s) + public static string? NormalizeNull(this string? s) { return s == LabelFilter.Null ? null : s; } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/ClientFilter.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/ClientFilter.cs index 12145cd70..64385431c 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/ClientFilter.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/ClientFilter.cs @@ -7,7 +7,7 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class ClientFilter { - public string Name { get; set; } + public string Name { get; set; } = string.Empty; public JsonElement Parameters { get; set; } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureAllocation.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureAllocation.cs index 0b2877e6e..258c24d33 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureAllocation.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureAllocation.cs @@ -7,16 +7,16 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeatureAllocation { - public string DefaultWhenDisabled { get; set; } + public string? DefaultWhenDisabled { get; set; } - public string DefaultWhenEnabled { get; set; } + public string? DefaultWhenEnabled { get; set; } - public IEnumerable User { get; set; } + public IEnumerable? User { get; set; } - public IEnumerable Group { get; set; } + public IEnumerable? Group { get; set; } - public IEnumerable Percentile { get; set; } + public IEnumerable? Percentile { get; set; } - public string Seed { get; set; } + public string? Seed { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureConditions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureConditions.cs index d1c23003a..98a873f96 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureConditions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureConditions.cs @@ -9,6 +9,6 @@ internal class FeatureConditions { public List ClientFilters { get; set; } = new List(); - public string RequirementType { get; set; } + public string? RequirementType { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlag.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlag.cs index 31af50a68..282de9e24 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlag.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlag.cs @@ -7,16 +7,16 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeatureFlag { - public string Id { get; set; } + public string Id { get; set; } = string.Empty; public bool Enabled { get; set; } - public FeatureConditions Conditions { get; set; } + public FeatureConditions? Conditions { get; set; } - public IEnumerable Variants { get; set; } + public IEnumerable? Variants { get; set; } - public FeatureAllocation Allocation { get; set; } + public FeatureAllocation? Allocation { get; set; } - public FeatureTelemetry Telemetry { get; set; } + public FeatureTelemetry? Telemetry { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlagOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlagOptions.cs index 4b6d56d6d..66186a8dd 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlagOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureFlagOptions.cs @@ -33,7 +33,7 @@ internal TimeSpan RefreshInterval /// /// The label that feature flags will be selected from. /// - public string Label { get; set; } + public string? Label { get; set; } /// /// The time after which the cached values of the feature flags expire. Must be greater than or equal to 1 second. @@ -81,7 +81,7 @@ public FeatureFlagOptions SetRefreshInterval(TimeSpan refreshInterval) /// The characters asterisk (*), comma (,) and backslash (\) are reserved and must be escaped using a backslash (\). /// Up to 5 tag filters can be provided. If no tag filters are provided, feature flags will not be filtered based on tags. /// - public FeatureFlagOptions Select(string featureFlagFilter, string labelFilter = LabelFilter.Null, IEnumerable tagFilters = null) + public FeatureFlagOptions Select(string featureFlagFilter, string labelFilter = LabelFilter.Null, IEnumerable? tagFilters = null) { if (string.IsNullOrEmpty(featureFlagFilter)) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureGroupAllocation.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureGroupAllocation.cs index f39ca8cdc..eb11d7d6d 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureGroupAllocation.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureGroupAllocation.cs @@ -7,8 +7,8 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeatureGroupAllocation { - public string Variant { get; set; } + public string? Variant { get; set; } - public IEnumerable Groups { get; set; } + public IEnumerable? Groups { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs index fdd7f2fdf..a950525be 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using Azure.Data.AppConfiguration; using Microsoft.Extensions.Configuration.AzureAppConfiguration.Extensions; using System; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeaturePercentileAllocation.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeaturePercentileAllocation.cs index 1d107dba7..af2a1b6f0 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeaturePercentileAllocation.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeaturePercentileAllocation.cs @@ -6,7 +6,7 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeaturePercentileAllocation { - public string Variant { get; set; } + public string? Variant { get; set; } public double From { get; set; } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureTelemetry.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureTelemetry.cs index 09d8dd71e..1a28b6c5b 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureTelemetry.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureTelemetry.cs @@ -10,6 +10,6 @@ internal class FeatureTelemetry { public bool Enabled { get; set; } - public IDictionary Metadata { get; set; } + public IDictionary? Metadata { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureUserAllocation.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureUserAllocation.cs index fc403d6e8..42c439218 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureUserAllocation.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureUserAllocation.cs @@ -7,8 +7,8 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeatureUserAllocation { - public string Variant { get; set; } + public string? Variant { get; set; } - public IEnumerable Users { get; set; } + public IEnumerable? Users { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureVariant.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureVariant.cs index 7bfd9d6f7..84c1d18c4 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureVariant.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureVariant.cs @@ -7,10 +7,10 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.FeatureManage { internal class FeatureVariant { - public string Name { get; set; } + public string Name { get; set; } = string.Empty; public JsonElement ConfigurationValue { get; set; } - public string StatusOverride { get; set; } + public string? StatusOverride { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/JsonFlattener.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/JsonFlattener.cs index fa5983c1c..70ee5ccd7 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/JsonFlattener.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/JsonFlattener.cs @@ -12,7 +12,7 @@ internal class JsonFlattener { private readonly List> _data = new List>(); private readonly Stack _context = new Stack(); - private string _currentPath; + private string _currentPath = string.Empty; public List> FlattenJson(JsonElement rootElement) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/IKeyValueAdapter.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/IKeyValueAdapter.cs index de13314e1..0204a0f6b 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/IKeyValueAdapter.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/IKeyValueAdapter.cs @@ -15,7 +15,7 @@ internal interface IKeyValueAdapter bool CanProcess(ConfigurationSetting setting); - void OnChangeDetected(ConfigurationSetting setting = null); + void OnChangeDetected(ConfigurationSetting? setting = null); void OnConfigUpdated(); diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/KeyValueChange.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/KeyValueChange.cs index 2286016d7..50a09b62a 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/KeyValueChange.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/KeyValueChange.cs @@ -18,10 +18,10 @@ internal struct KeyValueChange public string Key { get; set; } - public string Label { get; set; } + public string? Label { get; set; } - public ConfigurationSetting Current { get; set; } + public ConfigurationSetting? Current { get; set; } - public ConfigurationSetting Previous { get; set; } + public ConfigurationSetting? Previous { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Logger.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Logger.cs index e68624086..e0f72e4a7 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Logger.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Logger.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration { internal class Logger { - ILogger _logger; + ILogger? _logger; public Logger() { } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Microsoft.Extensions.Configuration.AzureAppConfiguration.csproj b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Microsoft.Extensions.Configuration.AzureAppConfiguration.csproj index 8c8241a79..16dc39d73 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Microsoft.Extensions.Configuration.AzureAppConfiguration.csproj +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Microsoft.Extensions.Configuration.AzureAppConfiguration.csproj @@ -5,6 +5,7 @@ netstandard2.0;netstandard2.1 8.0 + enable Microsoft.Extensions.Configuration.AzureAppConfiguration is a configuration provider for the .NET Core framework that allows developers to use Microsoft Azure App Configuration service as a configuration source in their applications. true false diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueIdentifier.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueIdentifier.cs index 9a77346ac..c35b4cd03 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueIdentifier.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueIdentifier.cs @@ -15,15 +15,15 @@ internal struct KeyValueIdentifier /// /// Label of the key-value in App Configuration. /// - public string Label { get; set; } + public string? Label { get; set; } - public KeyValueIdentifier(string key, string label) + public KeyValueIdentifier(string key, string? label) { Key = key; Label = label.NormalizeNull(); } - public override bool Equals(object obj) + public override bool Equals(object? obj) { if (obj is KeyValueIdentifier keyLabel) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueSelector.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueSelector.cs index f01eb6559..e7049ef92 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueSelector.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueSelector.cs @@ -16,22 +16,22 @@ public class KeyValueSelector /// A filter that determines the set of keys that are included in the configuration provider. /// /// See the documentation for this provider for details on the format of filter expressions - public string KeyFilter { get; set; } + public string? KeyFilter { get; set; } /// /// A filter that determines what label to use when selecting key-values for the the configuration provider. /// - public string LabelFilter { get; set; } + public string? LabelFilter { get; set; } /// /// The name of the Azure App Configuration snapshot to use when selecting key-values for the configuration provider. /// - public string SnapshotName { get; set; } + public string? SnapshotName { get; set; } /// /// A filter that determines what tags to require when selecting key-values for the the configuration provider. /// - public IEnumerable TagFilters { get; set; } + public IEnumerable? TagFilters { get; set; } /// /// A boolean that signifies whether this selector is intended to select feature flags. @@ -43,7 +43,7 @@ public class KeyValueSelector /// /// The object to compare with the current object. /// true if the specified object is equal to the current object; otherwise, false. - public override bool Equals(object obj) + public override bool Equals(object? obj) { if (obj is KeyValueSelector selector) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueWatcher.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueWatcher.cs index a9f59e745..b785e18f1 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueWatcher.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Models/KeyValueWatcher.cs @@ -12,17 +12,17 @@ internal class KeyValueWatcher /// /// Key of the key-value to be watched. /// - public string Key { get; set; } + public string Key { get; set; } = string.Empty; /// /// Label of the key-value to be watched. /// - public string Label { get; set; } + public string? Label { get; set; } /// /// Tags of the key-value to be watched. /// - public IEnumerable Tags { get; set; } + public IEnumerable? Tags { get; set; } /// /// A flag to refresh all key-values. @@ -39,7 +39,7 @@ internal class KeyValueWatcher /// public DateTimeOffset NextRefreshTime { get; set; } - public override bool Equals(object obj) + public override bool Equals(object? obj) { if (obj is KeyValueWatcher kvWatcher) { diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/PushNotification.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/PushNotification.cs index 1690645d3..837edc31f 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/PushNotification.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/PushNotification.cs @@ -13,16 +13,16 @@ public class PushNotification /// /// The URI of the resource which triggered the . /// - public Uri ResourceUri { get; set; } + public Uri? ResourceUri { get; set; } /// /// The Synchronization Token to be added to the next request to the App Configuration Service. /// - public string SyncToken { get; set; } + public string? SyncToken { get; set; } /// /// The Type of Event which triggered the . /// - public string EventType { get; set; } + public string? EventType { get; set; } } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs index 2f50a3856..ee4b3a32c 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs @@ -44,17 +44,17 @@ internal class RequestTracingOptions /// /// Version of the Microsoft.FeatureManagement assembly, if present in the application. /// - public string FeatureManagementVersion { get; set; } + public string? FeatureManagementVersion { get; set; } /// /// Version of the Microsoft.FeatureManagement.AspNetCore assembly, if present in the application. /// - public string FeatureManagementAspNetCoreVersion { get; set; } + public string? FeatureManagementAspNetCoreVersion { get; set; } /// /// Version of the Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration assembly, if present in the application. /// - public string AspireComponentVersion { get; set; } + public string? AspireComponentVersion { get; set; } /// /// Flag to indicate whether Microsoft.AspNetCore.SignalR assembly is present in the application. diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/SnapshotReference/SnapshotReference.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/SnapshotReference/SnapshotReference.cs index b0731f1c0..e8c1dd708 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/SnapshotReference/SnapshotReference.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/SnapshotReference/SnapshotReference.cs @@ -6,6 +6,6 @@ namespace Microsoft.Extensions.Configuration.AzureAppConfiguration.SnapshotRefer { internal class SnapshotReference { - public string SnapshotName { get; set; } + public string SnapshotName { get; set; } = string.Empty; } } diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs index 33050b5b8..77e8ca610 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. // +#nullable disable using System; using System.Collections.Generic; using System.Diagnostics;