我有一个Thing
可以从string
. 当我直接调用带有Thing
参数的方法时,从string
to的转换Thing
是正确的。
但是,如果我使用反射来调用相同的方法,则会引发异常
System.ArgumentException : Object of type 'System.String' cannot be
converted to type 'Things.Program+Thing'.
也许有一个很好的理由,但我无法弄清楚。有人知道如何使用反射来完成这项工作吗?
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:请不要讨论为什么隐式转换或反射是不好的。