Lire en anglais

Partager via


ModuleResolveEventHandler Délégué

Définition

Représente la méthode qui gérera l’événement ModuleResolve d’un Assembly.

C#
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
C#
[System.Serializable]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);

Paramètres

sender
Object

Assembly qui était la source de l'événement.

e
ResolveEventArgs

Arguments fournis par l'objet décrivant l'événement.

Valeur renvoyée

Module qui satisfait la requête.

Attributs

Exemples

L’exemple suivant illustre la séquence d’exécution dans laquelle un gestionnaire d’événements est appelé. Dans cet exemple, Server1 est un module externe de la classe MySample.

C#
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();
    }
}
C#
// 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;
    }
}

Pour compiler et exécuter l’exemple :

  1. Compilez Server1 à l’aide de la commande suivante :

    Console
    csc /out:subfolder\Server1.netmodule /t:module Server1.cs
    
  2. Compilez MySample à l’aide de la commande suivante :

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

Note

Le fichier de module Server1.netmodule doit se trouver dans un sous-répertoire nommé « sous-dossier » pour que cet exemple fonctionne correctement.

Remarques

Si le chargeur de classes common language runtime ne peut pas résoudre une référence à un module interne d’un assembly par des moyens normaux, cet événement est déclenché. Le gestionnaire d’événements pour ce délégué doit localiser et retourner un module qui répond à la demande.

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é.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1