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