Estranho, mas a resposta aceita parece errada sobre o elenco e o Convert, pois nos meus testes e na leitura da documentação também não devemos levar em consideração operadores implícitos ou explícitos.
Portanto, se eu tiver uma variável do tipo objeto e a classe "box" tiver alguns operadores implícitos definidos, eles não funcionarão.
Em vez disso, outra maneira simples, mas realmente o custo do desempenho, é converter antes em dinâmico.
(int) (dinâmico) myObject.
Você pode experimentá-lo na janela interativa do VS.
public class Test
{
public static implicit operator int(Test v)
{
return 12;
}
}
(int)(object)new Test() //this will fail
Convert.ToInt32((object)new Test()) //this will fail
(int)(dynamic)(object)new Test() //this will pass