AppDomain.ReflectionOnlyGetAssemblies 메서드

정의

애플리케이션 도메인의 리플렉션 전용 컨텍스트로 로드된 어셈블리를 반환합니다.Returns the assemblies that have been loaded into the reflection-only context of the application domain.

public:
 cli::array <System::Reflection::Assembly ^> ^ ReflectionOnlyGetAssemblies();
public System.Reflection.Assembly[] ReflectionOnlyGetAssemblies ();
member this.ReflectionOnlyGetAssemblies : unit -> System.Reflection.Assembly[]
Public Function ReflectionOnlyGetAssemblies () As Assembly()

반환

애플리케이션 도메인의 리플렉션 전용 컨텍스트에 로드된 어셈블리를 나타내는 Assembly 개체의 배열입니다.An array of Assembly objects that represent the assemblies loaded into the reflection-only context of the application domain.

예외

언로드된 애플리케이션 도메인에서 작업을 시도한 경우An operation is attempted on an unloaded application domain.

예제

다음 코드 예제에서는 시스템 .dll 어셈블리를 실행 컨텍스트에 로드 한 다음 리플렉션 전용 컨텍스트에 로드 합니다.The following code example loads the System.dll assembly into the execution context and then into the reflection-only context. GetAssembliesReflectionOnlyGetAssemblies 메서드는 각 컨텍스트에 로드 된 어셈블리를 표시 하는 데 사용 됩니다.The GetAssemblies and ReflectionOnlyGetAssemblies methods are used to display the assemblies loaded into each context.

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 Example
{
    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());
        }
    }
}
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

설명

이 메서드는 리플렉션 전용 컨텍스트에 로드 된 어셈블리를 반환 합니다.This method returns the assemblies that have been loaded into the reflection-only context. 실행을 위해 로드 된 어셈블리를 가져오려면 GetAssemblies 메서드를 사용 합니다.To get the assemblies that have been loaded for execution, use the GetAssemblies method.

적용 대상

추가 정보