Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

ModuleResolveEventHandler, délégué

Représente la méthode qui gérera l'événement ModuleResolve de Assembly.

Espace de noms :  System.Reflection
Assembly :  mscorlib (dans mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate Module ModuleResolveEventHandler(
	Object sender,
	ResolveEventArgs e
)

Paramètres

sender
Type : System.Object
Assembly qui était la source de l'événement.
e
Type : System.ResolveEventArgs
Arguments fournis par l'objet décrivant l'événement.

Valeur de retour

Type : System.Reflection.Module
Module qui satisfait la requête.

Si le chargeur de classes du Common Language Runtime ne peut pas résoudre une référence à un module interne d'un assembly à l'aide des moyens normaux, cet événement est déclenché. Le gestionnaire d'événements pour ce délégué doit trouver et retourner un module qui répond à la demande.

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

Pour compiler et exécuter l'exemple

  1. Ouvrez une fenêtre d'invite de commandes et accédez au répertoire qui contient MySample.cs.

  2. Compilez Server1 à l'aide de la commande suivante :

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

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

RemarqueRemarque

Le fichier de module Server1.netmodule doit être dans un sous-répertoire nommé "subfolder" pour que cet exemple fonctionne correctement.


using System;
using System.IO;
using System.Reflection;

class MySample
{
    public static int Main(String[] args)
    {
        Assembly asm1 = Assembly.GetExecutingAssembly();
        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 = Assembly.GetExecutingAssembly();
        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;
    }
}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft