Я играю с DLR, чтобы лучше понять это. Я еще не совсем знаком со всеми его концепциями и терминологией, поэтому прошу прощения за любые терминологические или концептуальные ошибки в моем вопросе.
По сути, я так понимаю, что вы передаете объекты в деревьях выражений, но используете связующие, чтобы представить динамическую функциональность ваших объектов другим языкам, поддерживающим DLR. Таким образом, вместо добавления, например, непосредственно в дереве выражений (с Expression.Add), вы создаете связыватель, который вызывается сайтом вызовов всякий раз, когда это необходимо, и выполняет добавление для вас.
Однако, поскольку вы передаете объекты вокруг, в конце операции сложения (если операндами являются, например, два значения Int32), вам придется привязать полученный Int32 к объекту, поскольку (все еще в связывателе) что ожидает сайт вызова. Я немного боюсь, что этот постоянный бокс / распаковка может несколько повлиять на производительность среды выполнения.
Это действительно так, как это должно работать (со всем боксом / распаковкой) или я что-то упустил?