5. Введение Основные цели : Портирование динамических языков на платформу . NET Добавление динамических возможностей в существующие языки ( C#, VB.NET)
9. Протокол взаимодействия: 12 общих операций Бинарные операции Работа с методами Работа с индексаторами Архитектура
10. Итак, DLR Имеет 12 общих операций м/д языками Позволяет динамическим и статическим языкам работать вместе Состоит из 3 компонент Надстройка над CLR
13. Ядро DLR 1 ) obj – класс или объект? 2 ) Add – метод или делегат? 3 ) Нужно ли просматривать иерархию наследования? 4 ) А что это такое в параметрах? 5 ) Подходят ли эти параметры к методу или делегату? obj. Add (1, 2)
14. Ядро DLR 6 ) Не подходят? А существует ли преобразование между типами? 7 ) Явное или неявное? 8 ) Пользовательское преобразование? 9 ) ... 10 ) ... obj. Add (1, 2)
16. CallSite<T> 3 независимых кэша : L0: Делегат Target L1: История CallSite- а L2: История похожих CallSite- ов
17.
18.
19.
20. Ядро DLR - Binders Binder: Пример : GetMemenerBinder obj.Method SetMemberBinder obj.Property = 100 GetIndexBinder obj[1] или obj[“key”] Binders - ключевые компоненты , отвечающие за выполнение операций
21. Результат работы Binder -а – правило ( Rule) X + Y Ядро DLR - Binders If (x is int && y is int ) { return ( int )x + ( int )y } ( int )x + ( int )y
22. Ядро DLR - Кэширование L0 : Target if (x is int && y is int ) { return ( int )x + ( int )y } site.Update(…)