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