この質問を、考えられる最も単純なコード サンプルにまで絞り込みました。明示的な演算子がジェネリック メソッドから呼び出されないのはなぜですか?
class Program
{
static void Main(string[] args)
{
A a = new A();
B b = (B)a; // works as expected
b = Cast<B>(a);
}
static TResult Cast<TResult>(object o)
{
return (TResult)o; // throws Invalid Cast Exception
}
}
class A
{
}
class B
{
public static explicit operator B(A a)
{
return new B();
}
}