I'm using reflection to find the generic method for Newtonsoft JsonConvert.DeserializedObject<T>
but am finding that it's returning an ambiguous match for the non-generic version JsonConvert.DeserializeObject
, here is the code which tries to get the generic method:
return typeof(JsonConvert).GetMethod("DeserializeObject", new Type[] { typeof(string) }).MakeGenericMethod(genericType);
I've specified that I want the method which takes a string
as its only argument but both the generic and non-generic version have matching parameter lists, and I receive the ambiguous match error.
Is it possible to to get the generic version using GetMethod
in this way? I know I can use Linq and GetMethods()
to find it e.g:
var method = typeof(JsonConvert).GetMethods().FirstOrDefault(
x => x.Name.Equals("DeserializeObject", StringComparison.OrdinalIgnoreCase) &&
x.IsGenericMethod && x.GetParameters().Length == 1 &&
x.GetParameters()[0].ParameterType == typeof(string));
But this is a bit cumbersome, there must be a better way.
MakeGenericMethod(genericType);
? – GenusGetMethod
cannot choose betweenJsonConvert.DeserializeObject(string)
andJsonConvert.DeserializeObject<T>(string)
. I think you are stuck with the Linq method here. – AtingleGetMethod()
but I guess not, thanks anyway! – Genus