ModuleResolveEventHandler Делегат
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет метод, который будет обрабатывать ModuleResolve событие объекта Assembly.
public delegate System::Reflection::Module ^ ModuleResolveEventHandler(System::Object ^ sender, ResolveEventArgs ^ e);
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
[System.Serializable]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
[<System.Serializable>]
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
Public Delegate Function ModuleResolveEventHandler(sender As Object, e As ResolveEventArgs) As Module
Параметры
- sender
- Object
Сборка, которая была источником события.
Аргументы, предоставленные объектом, описывающим событие.
Возвращаемое значение
Модуль, удовлетворяющий запросу.
- Атрибуты
Примеры
В следующем примере показано последовательность выполнения, в которой вызывается обработчик событий. В этом примере Server1 — это внешний модуль класса MySample.
using System;
using System.IO;
using System.Reflection;
class MySample
{
public static int Main(String[] args)
{
Assembly asm1 = typeof(MySample).Assembly;
asm1.ModuleResolve += new ModuleResolveEventHandler(evModuleResolve);
Console.WriteLine("Calling MySample.Test...");
Test();
return 0;
}
private static Module evModuleResolve(object sender, ResolveEventArgs e)
{
Console.WriteLine();
Console.WriteLine("******************************************************");
Console.WriteLine("* MySample.evModuleResolve() in module: {0:s} *",
Type.GetType("MySample").Module.ScopeName);
Console.WriteLine("******************************************************");
FileStream fs = File.Open("subfolder\\Server1.netmodule", FileMode.Open);
long len = fs.Length;
byte[] rgFileBytes = new byte[len];
fs.Read(rgFileBytes, 0, (int)len);
Assembly a = typeof(MySample).Assembly;
Module m = a.LoadModule("Server1.netmodule", rgFileBytes);
return m;
}
private static void Test()
{
Console.WriteLine("Instantiating Server1...");
Server1 s = new Server1();
Console.WriteLine("Calling Server1.trivial...");
s.trivial();
}
}
// Server1 module
using System;
using System.Reflection;
public class Server1 : MarshalByRefObject
{
public int trivial()
{
Console.WriteLine();
Console.WriteLine("******************************************************");
Console.WriteLine("* Server1.trivial() in module: {0:s} *", this.GetType().Module.ScopeName);
Console.WriteLine("******************************************************");
Console.WriteLine("Returning from Server1.trivial...");
return 1;
}
}
Чтобы скомпилировать и запустить пример, выполните следующие действия:
Компиляция Server1 с помощью следующей команды:
csc /out:subfolder\Server1.netmodule /t:module Server1.csСкомпилируйте MySample с помощью следующей команды:
csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.csЗапустите MySample.exe.
Note
Файл модуля Server1.netmodule должен находиться в подкаталоге с именем "подпапка" для правильной работы этого примера.
Комментарии
Если загрузчик класса cl language runtime не может разрешить ссылку на внутренний модуль сборки с помощью обычных средств, это событие вызывается. Обработчик событий для этого делегата должен находить и возвращать модуль, удовлетворяющий запросу.
Методы расширения
| Имя | Описание |
|---|---|
| GetMethodInfo(Delegate) |
Возвращает объект, представляющий метод, представленный указанным делегатом. |