ModuleResolveEventHandler Delegat

Definicja

Reprezentuje metodę, która będzie obsługiwać ModuleResolve zdarzenie elementu 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 

Parametry

sender
Object

Zestaw, który był źródłem zdarzenia.

e
ResolveEventArgs

Argumenty dostarczone przez obiekt opisujący zdarzenie.

Wartość zwracana

Moduł, który spełnia żądanie.

Atrybuty

Przykłady

W poniższym przykładzie pokazano sekwencję wykonywania, w której wywoływana jest procedura obsługi zdarzeń. W tym przykładzie Server1 jest zewnętrznym modułem klasy 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;
    }
}

Aby skompilować i uruchomić przykład:

  1. Skompiluj serwer1 przy użyciu następującego polecenia:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs
    
  2. Skompiluj element MySample przy użyciu następującego polecenia:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs
    
  3. Uruchom MySample.exe.

Uwaga

Plik modułu Server1.netmodule musi znajdować się w podkatalogu o nazwie "podfolder", aby ten przykład działał prawidłowo.

Uwagi

Jeśli moduł ładujący klasy środowiska uruchomieniowego języka wspólnego nie może rozpoznać odwołania do wewnętrznego modułu zestawu za pomocą normalnych środków, to zdarzenie jest zgłaszane. Procedura obsługi zdarzeń dla tego delegata musi zlokalizować i zwrócić moduł, który spełnia żądanie.

Metody rozszerzania

GetMethodInfo(Delegate)

Pobiera obiekt reprezentujący metodę reprezentowaną przez określonego delegata.

Dotyczy