diff --git a/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj b/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj index 8b889e2057..f4c5c4ece2 100644 --- a/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj +++ b/framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj @@ -5,6 +5,8 @@ netstandard2.0;netstandard2.1;net7.0 + enable + Nullable Volo.Abp.Localization Volo.Abp.Localization $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index cf5c1ebb82..86133cdf17 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -118,7 +118,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer return value; } - protected virtual LocalizedString GetLocalizedStringOrNull( + protected virtual LocalizedString? GetLocalizedStringOrNull( string name, string cultureName, bool tryDefaults = true) @@ -153,7 +153,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer //Try to get from default language if (!Resource.DefaultCultureName.IsNullOrEmpty()) { - var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName, name); + var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName!, name); if (strDefault != null) { return strDefault; @@ -208,7 +208,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer //Fill all strings from default culture if (!Resource.DefaultCultureName.IsNullOrEmpty()) { - Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings, includeDynamicContributors); + Resource.Contributors.Fill(Resource.DefaultCultureName!, allStrings, includeDynamicContributors); } //Overwrite all strings from the language based on country culture @@ -268,7 +268,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer if (!Resource.DefaultCultureName.IsNullOrEmpty()) { await Resource.Contributors.FillAsync( - Resource.DefaultCultureName, + Resource.DefaultCultureName!, allStrings, includeDynamicContributors ); diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs index 3fc053da6a..b2acb3d072 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs @@ -19,14 +19,14 @@ public class AbpEnumLocalizer : IAbpEnumLocalizer, ITransientDependency return GetStringInternal(enumType, enumValue, StringLocalizerFactory.CreateDefaultOrNull()); } - public virtual string GetString(Type enumType, object enumValue, params IStringLocalizer[] specifyLocalizers) + public virtual string GetString(Type enumType, object enumValue, params IStringLocalizer?[] specifyLocalizers) { return GetStringInternal(enumType, enumValue, specifyLocalizers); } - protected virtual string GetStringInternal(Type enumType, object enumValue, params IStringLocalizer[] specifyLocalizers) + protected virtual string GetStringInternal(Type enumType, object enumValue, params IStringLocalizer?[] specifyLocalizers) { - var memberName = enumType.GetEnumName(enumValue); + var memberName = enumType.GetEnumName(enumValue)!; var localizedString = GetStringOrNull( specifyLocalizers, new[] @@ -42,7 +42,7 @@ public class AbpEnumLocalizer : IAbpEnumLocalizer, ITransientDependency return localizedString ?? memberName; } - protected virtual string GetStringOrNull(IStringLocalizer[] localizers, IEnumerable keys) + protected virtual string? GetStringOrNull(IStringLocalizer?[] localizers, IEnumerable keys) { foreach (var key in keys) { diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs index 5228f886e9..0fd9d47ac8 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs @@ -11,7 +11,7 @@ public class AbpLocalizationOptions /// /// Used as the default resource when resource was not specified on a localization operation. /// - public Type DefaultResourceType { get; set; } + public Type? DefaultResourceType { get; set; } public ITypeList GlobalContributors { get; } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs index 9b3bb2c201..91c7126a97 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs @@ -35,7 +35,7 @@ public static class AbpStringLocalizerExtensions throw new AbpException($"Could not find the _localizer field inside the {typeof(StringLocalizer<>).FullName} class. Probably its name has changed. Please report this issue to the ABP framework."); } - return localizerField.GetValue(stringLocalizer) as IStringLocalizer; + return (localizerField.GetValue(stringLocalizer) as IStringLocalizer)!; } public static IEnumerable GetAllStrings( diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs index b89a54abd9..f40385c128 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs @@ -52,12 +52,12 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca return CreateInternal(resource.ResourceName, resource, lockCache); } - public IStringLocalizer CreateByResourceNameOrNull(string resourceName) + public IStringLocalizer? CreateByResourceNameOrNull(string resourceName) { return CreateByResourceNameOrNullInternal(resourceName, lockCache: true); } - private IStringLocalizer CreateByResourceNameOrNullInternal( + private IStringLocalizer? CreateByResourceNameOrNullInternal( string resourceName, bool lockCache) { @@ -74,12 +74,12 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca return CreateInternal(resourceName, resource, lockCache); } - public Task CreateByResourceNameOrNullAsync(string resourceName) + public Task CreateByResourceNameOrNullAsync(string resourceName) { return CreateByResourceNameOrNullInternalAsync(resourceName, lockCache: true); } - private async Task CreateByResourceNameOrNullInternalAsync( + private async Task CreateByResourceNameOrNullInternalAsync( string resourceName, bool lockCache) { @@ -175,7 +175,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca { resource.Contributors.Add( Activator - .CreateInstance(globalContributorType) + .CreateInstance(globalContributorType)! .As() ); } @@ -194,7 +194,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca .BaseResourceNames .Select(x => CreateByResourceNameOrNullInternal(x, lockCache: false)) .Where(x => x != null) - .ToList(), + .ToList()!, AbpLocalizationOptions ) ); @@ -206,7 +206,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca { resource.Contributors.Add( Activator - .CreateInstance(globalContributorType) + .CreateInstance(globalContributorType)! .As() ); } @@ -259,7 +259,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca } } - public IStringLocalizer CreateDefaultOrNull() + public IStringLocalizer? CreateDefaultOrNull() { if (AbpLocalizationOptions.DefaultResourceType == null) { diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs index cd48bb1bd9..c2aa55cd2f 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs @@ -5,11 +5,9 @@ namespace Volo.Abp.Localization.External; public interface IExternalLocalizationStore { - [CanBeNull] - LocalizationResourceBase GetResourceOrNull([NotNull] string resourceName); + LocalizationResourceBase? GetResourceOrNull([NotNull] string resourceName); - [ItemCanBeNull] - Task GetResourceOrNullAsync([NotNull] string resourceName); + Task GetResourceOrNullAsync([NotNull] string resourceName); Task GetResourceNamesAsync(); diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs index 508f947981..891beba134 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs @@ -6,14 +6,14 @@ namespace Volo.Abp.Localization.External; public class NullExternalLocalizationStore : IExternalLocalizationStore, ISingletonDependency { - public LocalizationResourceBase GetResourceOrNull(string resourceName) + public LocalizationResourceBase? GetResourceOrNull(string resourceName) { return null; } - public Task GetResourceOrNullAsync(string resourceName) + public Task GetResourceOrNullAsync(string resourceName) { - return Task.FromResult(null); + return Task.FromResult(null); } public Task GetResourceNamesAsync() diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs index d4e06e9af5..e8ae6935de 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs @@ -8,5 +8,5 @@ public interface ILanguageInfo string DisplayName { get; } - string FlagIcon { get; } + string? FlagIcon { get; } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs index 6f7a487b6c..7d068b9494 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs @@ -2,7 +2,7 @@ public interface ILocalizableStringSerializer { - string Serialize(ILocalizableString localizableString); + string? Serialize(ILocalizableString localizableString); ILocalizableString Deserialize(string value); } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs index d5fcab206b..e6879c0007 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs @@ -10,7 +10,7 @@ public interface ILocalizationDictionary { string CultureName { get; } - LocalizedString GetOrNull(string name); + LocalizedString? GetOrNull(string name); void Fill(Dictionary dictionary); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs index 2a79d20821..2d3ade519f 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs @@ -10,7 +10,7 @@ public interface ILocalizationResourceContributor void Initialize(LocalizationResourceInitializationContext context); - LocalizedString GetOrNull(string cultureName, string name); + LocalizedString? GetOrNull(string cultureName, string name); void Fill(string cultureName, Dictionary dictionary); diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs index 04ec79aaf6..e4b66148a5 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.IO; using System.Text.Json; -using JetBrains.Annotations; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization.Json; @@ -13,8 +12,7 @@ public static class JsonLocalizationDictionaryBuilder /// Builds an from given file. /// /// Path of the file - [CanBeNull] - public static ILocalizationDictionary BuildFromFile(string filePath) + public static ILocalizationDictionary? BuildFromFile(string filePath) { try { @@ -38,10 +36,9 @@ public static class JsonLocalizationDictionaryBuilder /// Builds an from given json string. /// /// Json string - [CanBeNull] - public static ILocalizationDictionary BuildFromJsonString(string jsonString) + public static ILocalizationDictionary? BuildFromJsonString(string jsonString) { - JsonLocalizationFile jsonFile; + JsonLocalizationFile? jsonFile; try { jsonFile = JsonSerializer.Deserialize(jsonString, DeserializeOptions); @@ -50,6 +47,11 @@ public static class JsonLocalizationDictionaryBuilder { throw new AbpException("Can not parse json string. " + ex.Message); } + + if (jsonFile == null) + { + return null; + } var cultureCode = jsonFile.Culture; if (string.IsNullOrEmpty(cultureCode)) diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs index 08daf70682..8470e2696f 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs @@ -7,7 +7,7 @@ public class JsonLocalizationFile /// /// Culture name; eg : en , en-us, zh-CN /// - public string Culture { get; set; } + public string Culture { get; set; } = default!; public Dictionary Texts { get; set; } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs index 9183b89c4e..a2274b5a69 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs @@ -8,19 +8,18 @@ namespace Volo.Abp.Localization; public class LanguageInfo : ILanguageInfo { [NotNull] - public virtual string CultureName { get; protected set; } + public virtual string CultureName { get; protected set; } = default!; [NotNull] - public virtual string UiCultureName { get; protected set; } + public virtual string UiCultureName { get; protected set; } = default!; [NotNull] - public virtual string DisplayName { get; protected set; } + public virtual string DisplayName { get; protected set; } = default!; [NotNull] - public virtual string TwoLetterISOLanguageName { get; protected set; } + public virtual string TwoLetterISOLanguageName { get; protected set; } = default!; - [CanBeNull] - public virtual string FlagIcon { get; set; } + public virtual string? FlagIcon { get; set; } protected LanguageInfo() @@ -30,30 +29,30 @@ public class LanguageInfo : ILanguageInfo public LanguageInfo( string cultureName, - string uiCultureName = null, - string displayName = null, - string flagIcon = null) + string? uiCultureName = null, + string? displayName = null, + string? flagIcon = null) { ChangeCultureInternal(cultureName, uiCultureName, displayName); FlagIcon = flagIcon; } - public virtual void ChangeCulture(string cultureName, string uiCultureName = null, string displayName = null) + public virtual void ChangeCulture(string cultureName, string? uiCultureName = null, string? displayName = null) { ChangeCultureInternal(cultureName, uiCultureName, displayName); } - private void ChangeCultureInternal(string cultureName, string uiCultureName, string displayName) + private void ChangeCultureInternal(string cultureName, string? uiCultureName, string? displayName) { CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName)); - UiCultureName = !uiCultureName.IsNullOrWhiteSpace() + UiCultureName = (!uiCultureName.IsNullOrWhiteSpace() ? uiCultureName - : cultureName; + : cultureName)!; - DisplayName = !displayName.IsNullOrWhiteSpace() + DisplayName = (!displayName.IsNullOrWhiteSpace() ? displayName - : cultureName; + : cultureName)!; TwoLetterISOLanguageName = new CultureInfo(cultureName) .TwoLetterISOLanguageName; diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs index 8909708b67..7b60cce40d 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs @@ -6,10 +6,10 @@ namespace Volo.Abp.Localization; public static class LanguageInfoExtensions { - public static T FindByCulture( + public static T? FindByCulture( [NotNull] this IEnumerable languages, [NotNull] string cultureName, - [CanBeNull] string uiCultureName = null) + string? uiCultureName = null) where T : class, ILanguageInfo { if (uiCultureName == null) diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs index 5006d62ea8..02b9cc8fac 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs @@ -13,7 +13,7 @@ public class LocalizableStringSerializer : ILocalizableStringSerializer, ITransi LocalizationOptions = localizationOptions.Value; } - public virtual string Serialize(ILocalizableString localizableString) + public virtual string? Serialize(ILocalizableString? localizableString) { if (localizableString == null) { diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs index 7a55f1f8a3..b6e0da82e4 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs @@ -12,8 +12,8 @@ public class LocalizationResource : LocalizationResourceBase public LocalizationResource( [NotNull] Type resourceType, - [CanBeNull] string defaultCultureName = null, - [CanBeNull] ILocalizationResourceContributor initialContributor = null) + string? defaultCultureName = null, + ILocalizationResourceContributor? initialContributor = null) : base( LocalizationResourceNameAttribute.GetName(resourceType), defaultCultureName, diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs index a7ec4fb93b..6cbbd98188 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs @@ -10,16 +10,15 @@ public abstract class LocalizationResourceBase public List BaseResourceNames { get; } - [CanBeNull] - public string DefaultCultureName { get; set; } + public string? DefaultCultureName { get; set; } [NotNull] public LocalizationResourceContributorList Contributors { get; } public LocalizationResourceBase( [NotNull] string resourceName, - [CanBeNull] string defaultCultureName = null, - [CanBeNull] ILocalizationResourceContributor initialContributor = null) + string? defaultCultureName = null, + ILocalizationResourceContributor? initialContributor = null) { ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName)); DefaultCultureName = defaultCultureName; diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs index 6df15920da..9f11aa4051 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs @@ -7,7 +7,7 @@ namespace Volo.Abp.Localization; public class LocalizationResourceContributorList : List { - public LocalizedString GetOrNull( + public LocalizedString? GetOrNull( string cultureName, string name, bool includeDynamicContributors = true) diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs index 4a88eac199..f6487a85b7 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs @@ -8,12 +8,12 @@ public class LocalizationResourceDictionary : Dictionary _resourcesByTypes = new(); - public LocalizationResource Add([CanBeNull] string defaultCultureName = null) + public LocalizationResource Add(string? defaultCultureName = null) { return Add(typeof(TResouce), defaultCultureName); } - public LocalizationResource Add(Type resourceType, [CanBeNull] string defaultCultureName = null) + public LocalizationResource Add(Type resourceType, string? defaultCultureName = null) { var resourceName = LocalizationResourceNameAttribute.GetName(resourceType); if (ContainsKey(resourceName)) @@ -29,7 +29,7 @@ public class LocalizationResourceDictionary : Dictionary - public virtual LocalizedString GetOrNull(string name) + public virtual LocalizedString? GetOrNull(string name) { return Dictionary.GetOrDefault(name); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs index fcafed49f3..71ca2744a0 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs @@ -19,7 +19,7 @@ public class JsonVirtualFileLocalizationResourceContributor : VirtualFileLocaliz return file.Name.EndsWith(".json", StringComparison.OrdinalIgnoreCase); } - protected override ILocalizationDictionary CreateDictionaryFromFileContent(string jsonString) + protected override ILocalizationDictionary? CreateDictionaryFromFileContent(string jsonString) { return JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs index 40bb9de7c5..d87169ea31 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs @@ -16,11 +16,11 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza public bool IsDynamic => false; private readonly string _virtualPath; - private IVirtualFileProvider _virtualFileProvider; - private Dictionary _dictionaries; + private IVirtualFileProvider _virtualFileProvider = default!; + private Dictionary? _dictionaries; private bool _subscribedForChanges; private readonly object _syncObj = new object(); - private LocalizationResourceBase _resource; + private LocalizationResourceBase _resource = default!; protected VirtualFileLocalizationResourceContributorBase(string virtualPath) { @@ -33,7 +33,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza _virtualFileProvider = context.ServiceProvider.GetRequiredService(); } - public virtual LocalizedString GetOrNull(string cultureName, string name) + public virtual LocalizedString? GetOrNull(string cultureName, string name) { return GetDictionaries().GetOrDefault(cultureName)?.GetOrNull(name); } @@ -118,8 +118,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza protected abstract bool CanParseFile(IFileInfo file); - [CanBeNull] - protected virtual ILocalizationDictionary CreateDictionaryFromFile(IFileInfo file) + protected virtual ILocalizationDictionary? CreateDictionaryFromFile(IFileInfo file) { using (var stream = file.CreateReadStream()) { @@ -127,6 +126,5 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza } } - [CanBeNull] - protected abstract ILocalizationDictionary CreateDictionaryFromFileContent(string fileContent); + protected abstract ILocalizationDictionary? CreateDictionaryFromFileContent(string fileContent); }