Главная страница   /   8. Dynamic Language Runtime (DLR) (Метапрограммирование в .NET

Метапрограммирование в .NET

Метапрограммирование в .NET

Кевин Хазард

8. Dynamic Language Runtime (DLR)

В этой главе:

  • Самые простые динамические классы: класс ExpandoObject, класс DynamicObject, и динамический парсинг Open Data Protocol
  • Хостинговая модель DLR: время исполнения, движки и сферы действия
  • Добавления движка правил в приложение

Задайте группе программистов Python или JavaScript вопрос, что им особенно нравится в их языках, и они, вероятно, упомянут термин динамический. Затем спросите их, что это слово обозначает, и, несомненно, вы получите целый ряд ответов, в основном посвященных теме гибкости. Эти любители динамических языков обычно ценят гибкость и быструю разработку выше безопасности типов. Эти приоритеты ведут к еще более глубокому вопросу: должна ли классификация и доступ к данным быть ответственностью компиляторов или привилегией для программистов? Ответ полностью зависит от того, какую задачу вы пытаетесь решить.

Если вам нужна очень высокая производительность, динамическая типизация может и не быть разумным выбором. Но если ваша программа может снизить жесткость при одновременном повышении понимания разработчика за счет еще нескольких миллисекунд здесь и там, динамическая типизация может быть полезной. Хорошие архитекторы программного обеспечения знают, как найти тут баланс. Из-за стремления к равновесию статически типизированные языки программирования, как C#, предлагают в наши дни динамическую типизацию в качестве варианта: статическая типизация для безопасности и производительности, а динамическая типизация, когда вам нужно немного гибкости.

Эта глава посвящена пониманию, когда динамическая типизация может быть уместна в статически типизированном приложении. Это глава не посвящена обучению Python или Ruby. На самом деле, мы только затронем эти языки, чтобы показать, как они могут быть интегрированы в C# программу, чтобы обеспечить возможности скриптинга. Мы начнем с изучения некоторых из самых полезных классов для создания динамических объектов в DLR. В одном из примеров показано, как добавлять и удалять методы и свойства класса во время выполнения. Затем мы заставим работать эти ваши новые навыки и покажем, как вы элегантно можете использовать DLR для обработки слабоструктурированных документов во время выполнения. Мы покажем, как использовать возможности хостинга DLR, чтобы встроить вызываемый пользователем движок правил в ваше приложение с помощью нескольких строк кода. Наконец, мы пойдем за кулисы, чтобы помочь вам понять, что магия динамического программирования – вовсе не магия – при помощи изучения архитектуры DLR.

8.1. Простейшие динамические классы

8.2. Хостинговая модель DLR

8.3. Резюме