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.