When validating an object that contains a Uri property that specifies an absolute URI using MiniValidation @ 0.7.3, MiniValidator.TryValidate successfully validates the object. However, if you set the Uri property to specify a relative URI, MiniValidator.TryValidate throws an InvalidOperationException, ultimately caused by it getting Uri.Segments, which is not a valid operation on a relative URI.
Example code to reproduce:
static void Main() {
var model = new Model() {
Path = new Uri("./some-relative-path", UriKind.Relative)
};
if (!MiniValidator.TryValidate(model, out var errors)) {
Console.WriteLine("fail");
}
}
public class Model {
[Required]
public Uri Path { get; set; }
}
Example stack trace:
This operation is not supported for a relative URI.
at System.Uri.get_Segments()
at MiniValidation.PropertyHelper.CallNullSafePropertyGetter[TDeclaringType,TValue](Func`2 getter, Object target) in /_/src/MiniValidation/PropertyHelper.cs:line 129
at MiniValidation.PropertyDetails.GetValue(Object target) in /_/src/MiniValidation/TypeDetailsCache.cs:line 208
at MiniValidation.MiniValidator.TryValidateImpl(Object target, Boolean recurse, Boolean allowAsync, Dictionary`2 workingErrors, Dictionary`2 validatedObjects, List`1 validationResults, String prefix, Int32 currentDepth) in /_/src/MiniValidation/MiniValidator.cs:line 271
at MiniValidation.MiniValidator.TryValidateImpl(Object target, Boolean recurse, Boolean allowAsync, Dictionary`2 workingErrors, Dictionary`2 validatedObjects, List`1 validationResults, String prefix, Int32 currentDepth) in /_/src/MiniValidation/MiniValidator.cs:line 334
at MiniValidation.MiniValidator.TryValidate[TTarget](TTarget target, Boolean recurse, Boolean allowAsync, IDictionary`2& errors) in /_/src/MiniValidation/MiniValidator.cs:line 138
at MiniValidation.MiniValidator.TryValidate[TTarget](TTarget target, IDictionary`2& errors) in /_/src/MiniValidation/MiniValidator.cs:line 64
at UserQuery.Main(), line 6
Related to #44.
When validating an object that contains a
Uri
property that specifies an absolute URI using MiniValidation @ 0.7.3,MiniValidator.TryValidate
successfully validates the object. However, if you set theUri
property to specify a relative URI,MiniValidator.TryValidate
throws anInvalidOperationException
, ultimately caused by it gettingUri.Segments
, which is not a valid operation on a relative URI.Example code to reproduce:
Example stack trace: