How to cast implicitly on a reflected method call
.net, c#, casting, implicit-conversion, reflection
Solution
Found an answer which uses a TypeConverter (as Saeed mentions) Seems to do the job.
TypeConverter For Implicit Conversion when using reflection
Problem
I have a class `Thing` that is implicitly castable from a `string`. When I call a method with a `Thing` parameter directly the cast from `string` to `Thing` is done correctly. However if I use reflection to call the same method it throws the exception ``` System.ArgumentException : Object of type 'System.String' cannot be converted to type 'Things.Program+Thing'. ``` Maybe there is a good reason for this, but I can't figure it out. Does somebody have an idea how to get this working using reflection? ``` namespace Things { class Program { public class Thing { public string Some; public static implicit operator Thing(string s) { return new Thing {Some = s}; } } public void showThing(Thing t) { Console.WriteLine("Some = " + t.Some); } public void Main() { showThing("foo"); MethodInfo showThingReflected = GetType().GetMethod("showThing"); showThingReflected.Invoke(this, new dynamic[] {"foo"}); } } } ``` Meta: Please, no discussions why implicit casting or reflection is bad.