ModuleResolveEventHandler ModuleResolveEventHandler ModuleResolveEventHandler ModuleResolveEventHandler Delegate

Definición

Representa el método que controlará el evento ModuleResolve de 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 

Parámetros

sender
Object Object Object Object

Ensamblado que constituía el origen del evento.The assembly that was the source of the event.

e
ResolveEventArgs ResolveEventArgs ResolveEventArgs ResolveEventArgs

Argumentos proporcionados por el objeto que describe el evento.The arguments supplied by the object describing the event.

Valor devuelto

System.Reflection.Module

Módulo que satisface la solicitud.The module that satisfies the request.

Herencia
ModuleResolveEventHandlerModuleResolveEventHandlerModuleResolveEventHandlerModuleResolveEventHandler
Atributos

Ejemplos

En el ejemplo siguiente se muestra la secuencia de ejecución en la que se llama a un controlador de eventos.The following example demonstrates the sequence of execution in which an event handler is called. En este ejemplo, server1 es un módulo externo de la clase de ejemplo.In this example, Server1 is an external module of the MySample class.

Para compilar y ejecutar el ejemploTo compile and run the example

  1. Abra una ventana del símbolo del sistema y navegue hasta el directorio que contiene MySample.cs.Open a Command Prompt window and navigate to the directory that contains MySample.cs.

  2. Compile server1 con el siguiente comando:Compile Server1 using the following command:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs  
    
  3. Compile el ejemplo con el comando siguiente:Compile MySample using the following command:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs  
    
  4. Ejecute el archivo de ejemplo. exe.Run MySample.exe.

Nota

El archivo de módulo server1. netmodule debe estar en un subdirectorio denominado "subcarpeta" para que este ejemplo funcione correctamente.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;
    }
}

Comentarios

Si el cargador de clases de Common Language Runtime no puede resolver una referencia a un módulo interno de un ensamblado a través de medios normales, se genera este evento.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. El controlador de eventos para este delegado debe buscar y devolver un módulo que satisfaga la solicitud.The event handler for this delegate must locate and return a module that satisfies the request.

Métodos de extensión

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.Gets an object that represents the method represented by the specified delegate.

Se aplica a