ModuleResolveEventHandler ModuleResolveEventHandler ModuleResolveEventHandler ModuleResolveEventHandler Delegate

정의

AssemblyModuleResolve 이벤트를 처리할 메서드를 나타냅니다.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 

매개 변수

sender
Object Object Object Object

이벤트 소스인 어셈블리입니다.The assembly that was the source of the event.

e
ResolveEventArgs ResolveEventArgs ResolveEventArgs ResolveEventArgs

이벤트를 설명하는 개체에서 제공한 인수입니다.The arguments supplied by the object describing the event.

반환 값

System.Reflection.Module

요청을 만족시키는 모듈입니다.The module that satisfies the request.

상속
ModuleResolveEventHandlerModuleResolveEventHandlerModuleResolveEventHandlerModuleResolveEventHandler
특성

예제

다음 예제에서는 이벤트 처리기 라고 하는 실행 순서를 보여 줍니다.The following example demonstrates the sequence of execution in which an event handler is called. 이 예제에서는 Server1은 MySample 클래스는 외부 모듈입니다.In this example, Server1 is an external module of the MySample class.

컴파일 및 예제를 실행 하려면To compile and run the example

  1. 명령 프롬프트 창을 열고 MySample.cs 포함 된 디렉터리로 이동 합니다.Open a Command Prompt window and navigate to the directory that contains MySample.cs.

  2. Server1을 컴파일하려면 다음 명령을 사용 하 여:Compile Server1 using the following command:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs  
    
  3. 다음 명령을 사용 하 여 MySample를 컴파일하십시오.Compile MySample using the following command:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs  
    
  4. MySample.exe를 실행 합니다.Run MySample.exe.

참고

모듈 파일 Server1.netmodule "하위 폴더" 예이 제대로 작동 하려면 라는 하위 디렉터리에 있어야 합니다.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;
    }
}

설명

공용 언어 런타임 클래스 로더가 일반적인 방법으로 어셈블리의 내부 모듈에 대 한 참조를 해결할 수 없으면이 이벤트가 발생 합니다.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. 이 대리자에 대 한 이벤트 처리기를 찾고 요청을 충족 하는 모듈을 반환 해야 합니다.The event handler for this delegate must locate and return a module that satisfies the request.

확장 메서드

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

지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다.Gets an object that represents the method represented by the specified delegate.

적용 대상