-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed
Description
I am getting the following exception thrown, line 39 of DataAnnotationsValidator.cs (name space: ReHackt.Extensions.Options.Validation)
InvalidOperationException: Method may only be called on a Type for which Type.IsGenericParameter is true.
stack trace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
at ReHackt.Extensions.Options.Validation.DataAnnotationsValidator.TryValidateObjectRecursive[T](T obj, List`1 results, ISet`1 validatedObjects, IDictionary`2 validationContextItems)
at ReHackt.Extensions.Options.Validation.DataAnnotationsValidator.TryValidateObjectRecursive[T](T obj, List`1 results, ISet`1 validatedObjects, IDictionary`2 validationContextItems)
at ReHackt.Extensions.Options.Validation.DataAnnotationsValidator.TryValidateObjectRecursive[T](T obj, List`1 results, ISet`1 validatedObjects, IDictionary`2 validationContextItems)
at ReHackt.Extensions.Options.Validation.DataAnnotationsValidator.TryValidateObjectRecursive[T](T obj, List`1 results, IDictionary`2 validationContextItems)
at ReHackt.Extensions.Options.Validation.DataAnnotationsValidateRecursiveOptions`1.Validate(String name, TOptions options)
at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
It so happens that the object it is attempting to validate uses a TypeConverter attribute. In essence the the Json looks like:
{
"MessageBroker": {
"MessageBusUrl": "rabbitmq://localhost:5672/",
"Territory": "USA"
}
}
where Territory is not a string.
The options class looks like:
public class MessageBrokerConfiguration
{
public const string Section = "MessageBroker";
[Uri]
public Uri MessageBusUrl { get; set; }
[Required]
public TerritoryWrapper Territory { get; set; }
}
Class TerritoryWrapper has a TypeConverter attribute allowing it to be constructed from a string
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed