У меня есть класс Thing
, который неявно может быть преобразован из string
. Когда я вызываю метод с параметром Thing
напрямую, приведение от string
к 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"});
}
}
}
Мета:Пожалуйста, не обсуждайте, почему неявное приведение или отражение — это плохо.