jeudi 20 septembre 2018

“Object does not match target type” when calling generic method with reflection

I've searched a few different posts about a similar issue but none seem to solve my particular issue (though I believe they can't be far off).

The below link is the closest version to my problem

"Object does not match target type" when calling methods using string in C#

The only difference between my issue and the one in the link is that I am calling a generic method.

When I make my call I get the error "Object does not match target type” but the types, form what I can tell definitely match. Here is sample code for which I have reproduced my problem.

Any help would be appreciated

class Program
{
    static void Main(string[] args)
    {
        var obj = new SerializeObject();
        var serializer = new Serializer();


        var serialiserType = serializer.GetType();
        MethodInfo method = serialiserType.GetMethod("Deserialize");
        if (method == null)
        {
            return;
        }

        var t = obj.GetType();
        MethodInfo genericMethod = method.MakeGenericMethod(t);
        var tmp = genericMethod.Invoke(obj, new object[] { "Test" }); //error here
    }
}

public class Serializer
{
    public T Deserialize<T>(string value) where T : new()
    {
        return new T();
    }
}

public class SerializeObject
{

}





Aucun commentaire:

Enregistrer un commentaire