ModuleResolveEventHandler Delegat

Definition

Stellt die Methode dar, die das ModuleResolve-Ereignis eines Assembly behandelt.Represents the method that will handle the ModuleResolve event of an Assembly.

public delegate System::Reflection::Module ^ ModuleResolveEventHandler(System::Object ^ sender, ResolveEventArgs ^ e);
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
Public Delegate Function ModuleResolveEventHandler(sender As Object, e As ResolveEventArgs) As Module 

Parameter

sender
Object

Die Assembly, die die Quelle des Ereignisses war.The assembly that was the source of the event.

e
ResolveEventArgs

Die Argumente, die vom Objekt bereitgestellt wurden, das das Ereignis beschreibt.The arguments supplied by the object describing the event.

Rückgabewert

Module

Das Modul, das die Anforderung erfüllt.The module that satisfies the request.

Vererbung
ModuleResolveEventHandler
Attribute

Beispiele

Im folgenden Beispiel wird die Ausführungsreihenfolge veranschaulicht, in der ein Ereignishandler aufgerufen wird.The following example demonstrates the sequence of execution in which an event handler is called. In diesem Beispiel ist Server1 ein externes Modul der mysample-Klasse.In this example, Server1 is an external module of the MySample class.

So kompilieren Sie das Beispiel und führen es ausTo compile and run the example

  1. Öffnen Sie ein Eingabe Aufforderungs Fenster, und navigieren Sie zu dem Verzeichnis, das mysample.cs enthält.Open a Command Prompt window and navigate to the directory that contains MySample.cs.

  2. Kompilieren Sie Server1 mit dem folgenden Befehl:Compile Server1 using the following command:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs  
    
  3. Kompilieren Sie MySample mit dem folgenden Befehl:Compile MySample using the following command:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs  
    
  4. Führen Sie mysample. exe aus.Run MySample.exe.

Hinweis

Die Modul Datei server1. netmodule muss sich in einem Unterverzeichnis namens "Unterordner" befinden, damit dieses Beispiel ordnungsgemäß funktioniert.The module file Server1.netmodule must be in a subdirectory named "subfolder" for this example to work properly.

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;
    }
}

Hinweise

Wenn die Common Language Runtime Klassenlader einen Verweis auf ein internes Modul einer Assembly nicht auf normale Weise auflösen kann, wird dieses Ereignis ausgelöst.If the common language runtime class loader cannot resolve a reference to an internal module of an assembly through normal means, this event is raised. Der Ereignishandler für diesen Delegaten muss ein Modul suchen und zurückgeben, das die Anforderung erfüllt.The event handler for this delegate must locate and return a module that satisfies the request.

Erweiterungsmethoden

GetMethodInfo(Delegate)

Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird.Gets an object that represents the method represented by the specified delegate.

Gilt für: