ModuleResolveEventHandler Délégué

Définition

Représente la méthode qui gérera l’événement ModuleResolve d’un Assembly.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 

Paramètres

sender
Object

Assembly qui était la source de l'événement.The assembly that was the source of the event.

e
ResolveEventArgs

Arguments fournis par l'objet décrivant l'événement.The arguments supplied by the object describing the event.

Valeur renvoyée

Module

Module qui satisfait la requête.The module that satisfies the request.

Héritage
ModuleResolveEventHandler
Attributs

Exemples

L’exemple suivant illustre la séquence d’exécution dans laquelle un gestionnaire d’événements est appelé.The following example demonstrates the sequence of execution in which an event handler is called. Dans cet exemple, server1 est un module externe de la classe MySample.In this example, Server1 is an external module of the MySample class.

Pour compiler et exécuter l’exempleTo compile and run the example

  1. Ouvrez une fenêtre d’invite de commandes et accédez au répertoire qui contient MySample.cs.Open a Command Prompt window and navigate to the directory that contains MySample.cs.

  2. Compilez Server1 à l’aide de la commande suivante:Compile Server1 using the following command:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs  
    
  3. Compilez MySample à l’aide de la commande suivante:Compile MySample using the following command:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs  
    
  4. Exécutez MySample. exe.Run MySample.exe.

Notes

Le fichier de module server1. netmodule doit se trouver dans un sous-répertoire nommé «sous-dossier» pour que cet exemple fonctionne correctement.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;
    }
}

Remarques

Si le chargeur de classe common language runtime ne peut pas résoudre une référence à un module interne d’un assembly par le biais d’une méthode normale, cet événement est déclenché.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. Le gestionnaire d’événements de ce délégué doit localiser et retourner un module qui répond à la demande.The event handler for this delegate must locate and return a module that satisfies the request.

Méthodes d’extension

GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.Gets an object that represents the method represented by the specified delegate.

S’applique à