Existe uma maneira de fazer a conversão implícita dinâmica de tipos em c #?

Dada esta classe com um operador de conversão implícito:

public class MyDateTime
{
    public static implicit operator MyDateTime(System.Int64 encoded)
    {
        return new MyDateTime(encoded);
    }

    public MyDateTime(System.Int64 encoded)
    {
        _encoded = encoded;
    }
    System.Int64 _encoded;
}

Agora posso fazer o seguinte:

long a = 5;
MyDateTime b = a;

Mas NÃO o seguinte:

long f = 5;
object g = f;
MyDateTime h = g;

Isso fornece um tempo de compilação:

Não é possível converter implicitamente o tipo 'objeto' para 'MyDateTime'.

Faz sentido para mim.

Agora eu modifico o exemplo anterior da seguinte maneira:

long f = 5;
object g = f;
MyDateTime h = (MyDateTime)g;

Isso compila bem. Agora eu recebo um tempo de execuçãoInvalidCastException:

Não foi possível converter o objeto do tipo 'System.Int64' para digitar MyDateTime '.

Isso indica que os operadores de conversão implícita do C # são aplicados apenas no tempo de compilação e não são aplicados quando o tempo de execução do .NET está tentando converter dinamicamente um objeto para outro tipo.

Minhas perguntas:

Estou correcto?Existe alguma outra maneira de fazer isso?

A propósito, o aplicativo completo é que eu estou usandoDelegate.DynamicInvoke() para chamar uma função que leva umMyDateTime parâmetro e o tipo de argumento para o qual estou passandoDynamicInvoke é um longo.

questionAnswers(3)

yourAnswerToTheQuestion