Здесь происходит несколько вещей.
Сначала вы выполняете двоичную операцию. Итак, вам также необходимо переопределить метод TryBinaryOperation . Он будет вызван первым, до преобразования. Затем из метода TryBinaryOperation вы можете выполнить преобразование.
Во-вторых, по какой-либо причине TryBinaryOperation вызывается только в том случае, если вы напишите оператор, подобный этому:
int sum = myDynamicObject + 1;
Из того, что я вижу сейчас, порядок важен. Я проверю с командой DLR, является ли это ошибкой или предполагаемым поведением.
Обновление:
Это не ошибка. Для поддержки «1 + myDynamicObject» и «myDynamicObject + 1» вам нужен не только TryBinaryOperation, но и что-то вроде TryBinaryOperationFromRight, которого у текущего DynamicObject просто нет.