AppDomain.ReflectionOnlyGetAssemblies Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan rakitan yang telah dimuat ke dalam konteks hanya refleksi domain aplikasi.
public:
cli::array <System::Reflection::Assembly ^> ^ ReflectionOnlyGetAssemblies();
public System.Reflection.Assembly[] ReflectionOnlyGetAssemblies();
member this.ReflectionOnlyGetAssemblies : unit -> System.Reflection.Assembly[]
Public Function ReflectionOnlyGetAssemblies () As Assembly()
Mengembalikan
Array Assembly objek yang mewakili rakitan yang dimuat ke dalam konteks hanya refleksi domain aplikasi.
Pengecualian
Operasi dicoba pada domain aplikasi yang tidak dimuat.
Contoh
Contoh kode berikut memuat rakitan System.dll ke dalam konteks eksekusi lalu ke dalam konteks khusus pantulan. Metode GetAssemblies dan ReflectionOnlyGetAssemblies digunakan untuk menampilkan rakitan yang dimuat ke dalam setiap konteks.
using namespace System;
using namespace System::Reflection;
#using <System.dll>
using namespace System::Timers;
using namespace System::Collections;
int main()
{
// Get the assembly display name for System.dll, the assembly
// that contains System.Timers.Timer. Note that this causes
// System.dll to be loaded into the execution context.
//
String^ displayName = Timer::typeid->Assembly->FullName;
// Load System.dll into the reflection-only context. Note that
// if you obtain the display name (for example, by running this
// example program), and enter it as a literal string in the
// preceding line of code, you can load System.dll into the
// reflection-only context without loading it into the execution
// context.
Assembly::ReflectionOnlyLoad( displayName );
// Display the assemblies loaded into the execution and
// reflection-only contexts. System.dll appears in both contexts.
//
Console::WriteLine( L"------------- Execution Context --------------" );
IEnumerator^ myEnum = AppDomain::CurrentDomain->GetAssemblies()->GetEnumerator();
while ( myEnum->MoveNext() )
{
Assembly^ a = safe_cast<Assembly^>(myEnum->Current);
Console::WriteLine( L"\t{0}", a->GetName() );
}
Console::WriteLine( L"------------- Reflection-only Context --------------" );
IEnumerator^ myEnum1 = AppDomain::CurrentDomain->ReflectionOnlyGetAssemblies()->GetEnumerator();
while ( myEnum1->MoveNext() )
{
Assembly^ a = safe_cast<Assembly^>(myEnum1->Current);
Console::WriteLine( L"\t{0}", a->GetName() );
}
}
using System;
using System.Reflection;
using System.Timers;
public class ReflectionOnlySnippet
{
public static void Main()
{
// Get the assembly display name for System.dll, the assembly
// that contains System.Timers.Timer. Note that this causes
// System.dll to be loaded into the execution context.
//
string displayName = typeof(Timer).Assembly.FullName;
// Load System.dll into the reflection-only context. Note that
// if you obtain the display name (for example, by running this
// example program), and enter it as a literal string in the
// preceding line of code, you can load System.dll into the
// reflection-only context without loading it into the execution
// context.
Assembly.ReflectionOnlyLoad(displayName);
// Display the assemblies loaded into the execution and
// reflection-only contexts. System.dll appears in both contexts.
//
Console.WriteLine("------------- Execution Context --------------");
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
Console.WriteLine("\t{0}", a.GetName());
}
Console.WriteLine("------------- Reflection-only Context --------------");
foreach (Assembly a in AppDomain.CurrentDomain.ReflectionOnlyGetAssemblies())
{
Console.WriteLine("\t{0}", a.GetName());
}
}
}
open System
open System.Reflection
open System.Timers
// Get the assembly display name for System.dll, the assembly
// that contains System.Timers.Timer. Note that this causes
// System.dll to be loaded into the execution context.
let displayName = typeof<Timer>.Assembly.FullName
// Load System.dll into the reflection-only context. Note that
// if you obtain the display name (for example, by running this
// example program), and enter it as a literal string in the
// preceding line of code, you can load System.dll into the
// reflection-only context without loading it into the execution
// context.
Assembly.ReflectionOnlyLoad displayName |> ignore
// Display the assemblies loaded into the execution and
// reflection-only contexts. System.dll appears in both contexts.
printfn "------------- Execution Context --------------"
for a in AppDomain.CurrentDomain.GetAssemblies() do
printfn $"\t{a.GetName()}"
printfn "------------- Reflection-only Context --------------"
for a in AppDomain.CurrentDomain.ReflectionOnlyGetAssemblies() do
printfn $"\t{a.GetName()}"
Imports System.Reflection
Imports System.Timers
Public Class Example
Public Shared Sub Main()
' Get the assembly display name for System.dll, the assembly
' that contains System.Timers.Timer. Note that this causes
' System.dll to be loaded into the execution context.
'
Dim displayName As String = GetType(Timer).Assembly.FullName
' Load System.dll into the reflection-only context. Note that
' if you obtain the display name (for example, by running this
' example program), and enter it as a literal string in the
' preceding line of code, you can load System.dll into the
' reflection-only context without loading it into the execution
' context.
Assembly.ReflectionOnlyLoad(displayName)
' Display the assemblies loaded into the execution and
' reflection-only contexts. System.dll appears in both contexts.
'
Dim ad As AppDomain = AppDomain.CurrentDomain
Console.WriteLine("------------- Execution Context --------------")
For Each a As Assembly In ad.GetAssemblies()
Console.WriteLine(vbTab + "{0}", a.GetName())
Next a
Console.WriteLine("------------- Reflection-only Context --------------")
For Each a As Assembly In ad.ReflectionOnlyGetAssemblies()
Console.WriteLine(vbTab + "{0}", a.GetName())
Next a
End Sub
End Class
Keterangan
Metode ini mengembalikan rakitan yang telah dimuat ke dalam konteks khusus refleksi. Untuk mendapatkan rakitan yang telah dimuat untuk eksekusi, gunakan metode .GetAssemblies