ModuleResolveEventHandler Temsilci
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.
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:
Aşağıdaki komutu kullanarak Server1'i derleyin:
csc /out:subfolder\Server1.netmodule /t:module Server1.cs
Aşağıdaki komutu kullanarak MySample'i derleyin:
csc /out:MySample.exe /t:exe /addmodule:subfolder\Server1.netmodule MySample.cs
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. |