Глава 23.
загрузка сборок
и отражение
В этой главе рассказано о том, как находить информацию о типах, создавать их
экземпляры и обеспечивать доступ к их членам, несмотря на то что во время ком-
пиляции об этих типах ничего не известно. Сведения, приведенные в этой главе,
обычно нужны для создания динамически расширяемых приложений, то есть таких,
для которых одна компания создает хост-приложение, а другие —
подключаемые
компоненты
(add-ins), которые расширяют функциональность хоста. Тестировать
совместную работу хоста и подключаемых компонентов невозможно, так как по-
следние создаются разными компаниями, причем, как правило, уже после выпуска
хост-приложения. Вот почему хосту приходится самостоятельно находить под-
ключаемые компоненты во время выполнения.
Динамически расширяемое приложение может использовать хостинг CLR
и домены приложений, как описано в главе 22. Хост выполняет код подключаемых
компонентов в отдельных доменах приложений с собственными параметрами за-
щиты и конфигурирования. Хост также может выгрузить подключаемый компо-
нент, выгрузив домен приложений, в котором он выполняется. В конце главы мы
поговорим о том, как задействовать все эти механизмы, — включая хостинг CLR,
домены приложений, загрузку сборок, обнаружение типов, создание экземпляров
типов и отражение, — для создания надежного, безопасного и динамически рас-
ширяемого приложения.
ПриМеЧание
В. NET.Framework.версии.4 5.компания.Microsoft.ввела.новый.API.отражения .У.старо-
го.API.было.много.недостатков .Например,.он.плохо.поддерживал.LINQ,.встроенные.
политики.были.некорректными.для.некоторых.языков,.иногда.он.принудительно.
загружал.ненужные.сборки,.в.целом.был.слишком.сложным.и.предлагал.решения.
дял.задач,.которые.крайне.редко.встречались.на.практике .В.новом.API.все.эти.не-
достатки.устранены .С.другой.стороны,.в. NET.4 5.новый.API.отражения.обладает.
меньшей.полнотой,.чем.старый.API .С.новым.API.и.некоторыми.методами.рас-
ширения.(из.класса.System Reflection RuntimeReflectionExtensions).можно.сделать.
все.необходимое .В.будущих.версиях. NET.Framework.в.новый.API.будут.включены.
дополнительные.методы
Конечно,.для.настольных.приложений.старый.API.продолжает.поддерживаться,.так.
что.перекомпиляция.не.нарушит.совместимости.существующего.кода .Тем.не.менее.
в.разработках,.ориентированных.на.будущее,.рекомендуется.использовать.новый.
API,.поэтому.он.будет.подробно.рассматриваться.в.этой.главе .В.приложениях.Win-
dows.Store.(в.которых.проблема.совместимости.отсутствует).использование.нового.
API.обязательно
Do'stlaringiz bilan baham: |