MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает сборку из заданного имени сборки.
public:
abstract System::Reflection::Assembly ^ Resolve(System::Reflection::MetadataLoadContext ^ context, System::Reflection::AssemblyName ^ assemblyName);
public abstract System.Reflection.Assembly? Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
abstract member Resolve : System.Reflection.MetadataLoadContext * System.Reflection.AssemblyName -> System.Reflection.Assembly
Public MustOverride Function Resolve (context As MetadataLoadContext, assemblyName As AssemblyName) As Assembly
Параметры
- context
- MetadataLoadContext
Объект контекста загрузки метаданных, представляющий замкнутую совокупность объектов Type, загруженных только для проверки.
- assemblyName
- AssemblyName
Имя сборки.
Возвращаемое значение
Сборка для предоставленного значения assemblyName
.
Комментарии
Привязка имени сборки к сборке происходит при LoadFromAssemblyName вызове или когда тип из одной сборки зависит от другой сборки. Обработчик, который переопределяетResolve
, должен использовать MetadataLoadContext.LoadFromStreamили MetadataLoadContext.LoadFromByteArray для MetadataLoadContext.LoadFromAssemblyPath загрузки запрошенной сборки и возврата ее.
Чтобы указать, что не удается найти сборку, обработчик должен возвращать null
, а не создавать исключение. Возврат null
фиксирует сбой, чтобы последующие попытки загрузки этого имени завершались сбоем без повторного вызова обработчика.
Если обработчик создает исключение, оно будет передано приложению, вызвавщему операцию, которая активировала привязку. Объект MetadataLoadContext не перехватывает его, и привязка не выполняется.
Обработчик, как правило, не вызывается более одного раза для одного и того же имени, если только два потока не загружают одну и ту же сборку. Даже в этом случае один результат победит и будет атомарно привязан к имени.
Объект MetadataLoadContext намеренно не выполняет сопоставление ссылок и дефов в возвращаемой сборке, так как то, что представляет собой соответствие ref-def, является политикой. Это также своего рода произвольное ограничение, которое MetadataLoadContext стремится избежать.
Не MetadataLoadContext может использовать сборки из других контекстов загрузки метаданных или других поставщиков типов (например, собственной системы отражения базовой среды выполнения). Если обработчик возвращает такую сборку MetadataLoadContext , объект создает исключение FileLoadException.