Jak rzutować niejawnie na wywołanie metody odbitej
mam klasęThing
który jest domyślnie odlewany zstring
. Kiedy wywołuję metodę za pomocąThing
parametryzuj bezpośrednio rzutstring
doThing
jest zrobione poprawnie.
Jeśli jednak użyję refleksji do wywołania tej samej metody, zgłasza wyjątek
System.ArgumentException : Object of type 'System.String' cannot be
converted to type 'Things.Program+Thing'.
Może jest ku temu dobry powód, ale nie mogę tego zrozumieć. Czy ktoś ma pomysł, jak to działa przy użyciu refleksji?
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:Proszę, nie dyskutujcie, dlaczego niejawne casting lub odbicie jest złe.