From bd3aa78c46b55ea8e4af5f03c711811ae80c4ebc Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 7 Jun 2023 17:04:05 +0800 Subject: [PATCH] Enable nullable annotations for Volo.Abp.Validation --- .../Volo.Abp.Validation/Volo.Abp.Validation.csproj | 2 ++ .../DataAnnotationObjectValidationContributor.cs | 2 +- .../DefaultAttributeValidationResultProvider.cs | 2 +- .../Validation/IAttributeValidationResultProvider.cs | 2 +- .../Volo/Abp/Validation/IObjectValidator.cs | 4 ++-- .../Volo/Abp/Validation/ObjectValidator.cs | 4 ++-- .../StringValues/AlwaysValidValueValidator.cs | 2 +- .../Validation/StringValues/BooleanValueValidator.cs | 2 +- .../Abp/Validation/StringValues/IStringValueType.cs | 5 ++--- .../Abp/Validation/StringValues/IValueValidator.cs | 7 +++---- .../LocalizableSelectionStringValueItem.cs | 4 ++-- .../Validation/StringValues/NumericValueValidator.cs | 2 +- .../StringValues/SelectionStringValueType.cs | 2 +- .../Validation/StringValues/StringValueTypeBase.cs | 6 +++--- .../Validation/StringValues/StringValueValidator.cs | 12 +++++------- .../Validation/StringValues/ValueValidatorBase.cs | 8 ++++---- 16 files changed, 32 insertions(+), 34 deletions(-) diff --git a/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj b/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj index b8f10667a2..d56374024d 100644 --- a/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj +++ b/framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj @@ -5,6 +5,8 @@ netstandard2.0;netstandard2.1;net7.0 + enable + Nullable Volo.Abp.Validation Volo.Abp.Validation $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs index 8119e71271..90afe4d60e 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs @@ -33,7 +33,7 @@ public class DataAnnotationObjectValidationContributor : IObjectValidationContri return Task.CompletedTask; } - protected virtual void ValidateObjectRecursively(List errors, object validatingObject, int currentDepth) + protected virtual void ValidateObjectRecursively(List errors, object? validatingObject, int currentDepth) { if (currentDepth > MaxRecursiveParameterValidationDepth) { diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs index feb8db8184..ced3615d04 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs @@ -5,7 +5,7 @@ namespace Volo.Abp.Validation; public class DefaultAttributeValidationResultProvider : IAttributeValidationResultProvider, ITransientDependency { - public virtual ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext) + public virtual ValidationResult? GetOrDefault(ValidationAttribute validationAttribute, object? validatingObject, ValidationContext validationContext) { return validationAttribute.GetValidationResult(validatingObject, validationContext); } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs index 737dbac508..5cc919b967 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs @@ -4,5 +4,5 @@ namespace Volo.Abp.Validation; public interface IAttributeValidationResultProvider { - ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext); + ValidationResult? GetOrDefault(ValidationAttribute validationAttribute, object? validatingObject, ValidationContext validationContext); } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs index 57d60b0f8e..51cff66c10 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs @@ -8,13 +8,13 @@ public interface IObjectValidator { Task ValidateAsync( object validatingObject, - string name = null, + string? name = null, bool allowNull = false ); Task> GetErrorsAsync( object validatingObject, - string name = null, + string? name = null, bool allowNull = false ); } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs index 83dd17521f..dd3ff2f395 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs @@ -19,7 +19,7 @@ public class ObjectValidator : IObjectValidator, ITransientDependency Options = options.Value; } - public virtual async Task ValidateAsync(object validatingObject, string name = null, bool allowNull = false) + public virtual async Task ValidateAsync(object validatingObject, string? name = null, bool allowNull = false) { var errors = await GetErrorsAsync(validatingObject, name, allowNull); @@ -32,7 +32,7 @@ public class ObjectValidator : IObjectValidator, ITransientDependency } } - public virtual async Task> GetErrorsAsync(object validatingObject, string name = null, bool allowNull = false) + public virtual async Task> GetErrorsAsync(object validatingObject, string? name = null, bool allowNull = false) { if (validatingObject == null) { diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs index e986124fd9..1aad057983 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues; [ValueValidator("NULL")] public class AlwaysValidValueValidator : ValueValidatorBase { - public override bool IsValid(object value) + public override bool IsValid(object? value) { return true; } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs index 3330b2bd49..5328cc8590 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues; [ValueValidator("BOOLEAN")] public class BooleanValueValidator : ValueValidatorBase { - public override bool IsValid(object value) + public override bool IsValid(object? value) { if (value == null) { diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs index 6cddb0701c..94493fd2b4 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs @@ -7,11 +7,10 @@ public interface IStringValueType { string Name { get; } - [CanBeNull] - object this[string key] { get; set; } + object? this[string key] { get; set; } [NotNull] - Dictionary Properties { get; } + Dictionary Properties { get; } IValueValidator Validator { get; set; } } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs index c449ed891e..6095f6ecc4 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs @@ -7,11 +7,10 @@ public interface IValueValidator { string Name { get; } - [CanBeNull] - object this[string key] { get; set; } + object? this[string key] { get; set; } [NotNull] - IDictionary Properties { get; } + IDictionary Properties { get; } - bool IsValid(object value); + bool IsValid(object? value); } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs index e01b7ee69b..753b4a8df0 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs @@ -2,7 +2,7 @@ public class LocalizableSelectionStringValueItem : ISelectionStringValueItem { - public string Value { get; set; } + public string Value { get; set; } = default!; - public LocalizableStringInfo DisplayText { get; set; } + public LocalizableStringInfo DisplayText { get; set; } = default!; } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs index 213327f884..e665301247 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs @@ -28,7 +28,7 @@ public class NumericValueValidator : ValueValidatorBase MaxValue = maxValue; } - public override bool IsValid(object value) + public override bool IsValid(object? value) { if (value == null) { diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs index 50fd401f00..92145ac764 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues; [StringValueType("SELECTION")] public class SelectionStringValueType : StringValueTypeBase { - public ISelectionStringValueItemSource ItemSource { get; set; } + public ISelectionStringValueItemSource ItemSource { get; set; } = default!; public SelectionStringValueType() { diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs index 2700b691f1..4e4f44b1d7 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs @@ -8,12 +8,12 @@ public abstract class StringValueTypeBase : IStringValueType { public virtual string Name => ValueValidatorAttribute.GetName(GetType()); - public object this[string key] { + public object? this[string key] { get => Properties.GetOrDefault(key); set => Properties[key] = value; } - public Dictionary Properties { get; } + public Dictionary Properties { get; } public IValueValidator Validator { get; set; } @@ -26,6 +26,6 @@ public abstract class StringValueTypeBase : IStringValueType protected StringValueTypeBase(IValueValidator validator) { Validator = validator; - Properties = new Dictionary(); + Properties = new Dictionary(); } } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs index 4b2cea9b67..3b3318719a 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs @@ -22,7 +22,7 @@ public class StringValueValidator : ValueValidatorBase set => this["MaxLength"] = value; } - public string RegularExpression { + public string? RegularExpression { get => this["RegularExpression"] as string; set => this["RegularExpression"] = value; } @@ -32,7 +32,7 @@ public class StringValueValidator : ValueValidatorBase } - public StringValueValidator(int minLength = 0, int maxLength = 0, string regularExpression = null, bool allowNull = false) + public StringValueValidator(int minLength = 0, int maxLength = 0, string? regularExpression = null, bool allowNull = false) { MinLength = minLength; MaxLength = maxLength; @@ -40,20 +40,18 @@ public class StringValueValidator : ValueValidatorBase AllowNull = allowNull; } - public override bool IsValid(object value) + public override bool IsValid(object? value) { if (value == null) { return AllowNull; } - if (!(value is string)) + if (!(value is string strValue)) { return false; } - var strValue = value as string; - if (MinLength > 0 && strValue.Length < MinLength) { return false; @@ -66,7 +64,7 @@ public class StringValueValidator : ValueValidatorBase if (!RegularExpression.IsNullOrEmpty()) { - return Regex.IsMatch(strValue, RegularExpression); + return Regex.IsMatch(strValue, RegularExpression!); } return true; diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs index 4537562301..5befa8ce7c 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs @@ -8,17 +8,17 @@ public abstract class ValueValidatorBase : IValueValidator { public virtual string Name => ValueValidatorAttribute.GetName(GetType()); - public object this[string key] { + public object? this[string key] { get => Properties.GetOrDefault(key); set => Properties[key] = value; } - public IDictionary Properties { get; } + public IDictionary Properties { get; } protected ValueValidatorBase() { - Properties = new Dictionary(); + Properties = new Dictionary(); } - public abstract bool IsValid(object value); + public abstract bool IsValid(object? value); }