Udostępnij za pośrednictwem


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ł spełniający żą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 serwer1 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 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

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

Uwagi

Jeśli moduł ładujący klas ś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. Program obsługi zdarzeń dla tego delegata musi zlokalizować i zwrócić moduł spełniający żądanie.

Metody rozszerzania

GetMethodInfo(Delegate)

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

Dotyczy