У меня есть подкласс DynamicObject, и я хотел бы реализовать неявное литье для примитивных типов, аналогично методу DO QueryTryText; то есть без записи нескольких неявных функций оператора [type].DynamicObject неявное литье
Использование:
dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;
Возможно ли это и если да, то каким образом?
С неявным литьем в сценарии «1 + myDynamicObject» он использует операцию с левыми сторонами в литом типе; в этом случае ints operation + (int, int). Но да, TryBinaryOperation поддерживает только левые операции. Вот почему подобный метод неявного литья как TryConvert для явного литья был бы очень полезен. –
TryConvert фактически поддерживает как неявное, так и явное литье. Например, это прекрасно работает: «int sum = myDynamicObject;» если вы переопределите TryConvert. Но когда вы выполняете двоичную операцию (и я думаю, унарные тоже), метод TryConvert не вызывается. Я предлагаю вам написать на [email protected] и объяснить вам пример использования. Это может быть ошибка, или за этим может быть разумный дизайн, который команда может объяснить лучше меня. –