Implizite Umwandlung in einen reflektierten Methodenaufruf
ich habe ein klasseThing
das ist implizit gießbar aus astring
. Wenn ich eine Methode mit a aufrufeThing
Parameter direkt die Besetzung ausstring
zuThing
ist richtig gemacht.
Wenn ich jedoch Reflection verwende, um dieselbe Methode aufzurufen, wird die Ausnahme ausgelöst
System.ArgumentException : Object of type 'System.String' cannot be
converted to type 'Things.Program+Thing'.
Vielleicht gibt es einen guten Grund dafür, aber ich kann es nicht herausfinden. Hat jemand eine Idee, wie man dies durch Reflektion zum Laufen bringt?
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:Bitte keine Diskussionen, warum implizites Casting oder Reflektion schlecht ist.