Есть ли способ сделать динамическое неявное приведение типов в C #?

Учитывая этот класс с неявным оператором приведения:

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;
}

Теперь я могу сделать следующее:

long a = 5;
MyDateTime b = a;

Но НЕ следующее:

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

Это дает время компиляции:

Не могу неявно преобразовать типобъект» кMyDateTime.

Имеет смысл для меня.

Теперь я модифицирую предыдущий пример следующим образом:

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

Это хорошо компилируется. Теперь я получаю время выполнения:InvalidCastException

Невозможно привести объект типа 'System.Int64' набрать MyDateTime '.

Это говорит мне о том, что неявные операторы приведения в C # применяются только во время компиляции и не применяются, когда среда выполнения .NET пытается динамически привести объект к другому типу.

Мои вопросы:

Я прав?Есть ли другой способ сделать это?

Кстати, полное заявление о том, что ям используюDelegate.DynamicInvoke() вызвать функцию, которая принимаетMyDateTime параметр и тип аргумента I 'м, переходящий кDynamicInvoke это долго.

Ответы на вопрос(3)

Ваш ответ на вопрос