Aracılığıyla paylaş


ModuleResolveEventHandler Temsilci

Tanım

bir Assemblyolayını işleyecek ModuleResolve yöntemi temsil eder.

public delegate System::Reflection::Module ^ ModuleResolveEventHandler(System::Object ^ sender, ResolveEventArgs ^ e);
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
[System.Serializable]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate System.Reflection.Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
[<System.Serializable>]
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ModuleResolveEventHandler = delegate of obj * ResolveEventArgs -> Module
Public Delegate Function ModuleResolveEventHandler(sender As Object, e As ResolveEventArgs) As Module 

Parametreler

sender
Object

Olayın kaynağı olan derleme.

e
ResolveEventArgs

Olayı açıklayan nesne tarafından sağlanan bağımsız değişkenler.

Dönüş Değeri

İsteği karşılayan modül.

Öznitelikler

Örnekler

Aşağıdaki örnek, bir olay işleyicisinin çağrıldığı yürütme sırasını gösterir. Bu örnekte, Server1 MySample sınıfının bir dış modülüdür.

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;
    }
}

Örneği derlemek ve çalıştırmak için:

  1. Aşağıdaki komutu kullanarak Server1'i derleyin:

    csc /out:subfolder\Server1.netmodule /t:module Server1.cs
    
  2. Aşağıdaki komutu kullanarak MySample'i derleyin:

    csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs
    
  3. MySample.exe çalıştırın.

Not

Bu örneğin düzgün çalışması için Server1.netmodule modül dosyasının "alt klasör" adlı bir alt dizinde olması gerekir.

Açıklamalar

Ortak dil çalışma zamanı sınıf yükleyicisi normal yollarla bir derlemenin iç modülüne başvuruyu çözümleyemiyorsa, bu olay tetiklenir. Bu temsilcinin olay işleyicisi, isteği karşılayan bir modülü bulmalı ve döndürmelidir.

Uzantı Metotları

GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır