Поделиться через


AppDomain Класс

Определение

Представляет домен приложения, который является изолированной средой, в которой выполняются приложения. Этот класс не может быть унаследован.

public ref class AppDomain sealed : MarshalByRefObject
public ref class AppDomain : MarshalByRefObject
public ref class AppDomain sealed : MarshalByRefObject, _AppDomain, System::Security::IEvidenceFactory
public sealed class AppDomain : MarshalByRefObject
public class AppDomain : MarshalByRefObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class AppDomain : MarshalByRefObject, _AppDomain, System.Security.IEvidenceFactory
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AppDomain : MarshalByRefObject, _AppDomain, System.Security.IEvidenceFactory
type AppDomain = class
    inherit MarshalByRefObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type AppDomain = class
    inherit MarshalByRefObject
    interface _AppDomain
    interface IEvidenceFactory
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AppDomain = class
    inherit MarshalByRefObject
    interface _AppDomain
    interface IEvidenceFactory
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Public Class AppDomain
Inherits MarshalByRefObject
Public NotInheritable Class AppDomain
Inherits MarshalByRefObject
Implements _AppDomain, IEvidenceFactory
Наследование
Атрибуты
Реализации

Примеры

В этом примере показано, как создать новый AppDomainэкземпляр, создать экземпляр типа в новом AppDomainобъекте и взаимодействовать с объектом этого типа. Кроме того, в этом примере показано, как выгрузить объект, вызывающий AppDomain сбор мусора.

using namespace System;
using namespace System::Reflection;
using namespace System::Threading;
using namespace System::Security::Policy;

// Because this class is derived from MarshalByRefObject, a proxy 
// to a MarshalByRefType object can be returned across an AppDomain 
// boundary.
ref class MarshalByRefType : MarshalByRefObject
{
public:
    //  Call this method via a proxy.
    void SomeMethod(String^ callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup^ ads = AppDomain::CurrentDomain->SetupInformation;
        Console::WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", 
            ads->ApplicationName, 
            ads->ApplicationBase, 
            ads->ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name 
        // of the second domain.
        // NOTE: The application's thread has transitioned between 
        // AppDomains.
        Console::WriteLine("Calling from '{0}' to '{1}'.", 
            callingDomainName, 
            Thread::GetDomain()->FriendlyName
        );
    };
};

void main()
{
    // Get and display the friendly name of the default AppDomain.
    String^ callingDomainName = Thread::GetDomain()->FriendlyName;
    Console::WriteLine(callingDomainName);

    // Get and display the full name of the EXE assembly.
    String^ exeAssembly = Assembly::GetEntryAssembly()->FullName;
    Console::WriteLine(exeAssembly);

    // Construct and initialize settings for a second AppDomain.
    AppDomainSetup^ ads = gcnew AppDomainSetup();
    ads->ApplicationBase = AppDomain::CurrentDomain->BaseDirectory;

    ads->DisallowBindingRedirects = false;
    ads->DisallowCodeDownload = true;
    ads->ConfigurationFile = 
        AppDomain::CurrentDomain->SetupInformation->ConfigurationFile;

    // Create the second AppDomain.
    AppDomain^ ad2 = AppDomain::CreateDomain("AD #2", 
        AppDomain::CurrentDomain->Evidence, ads);

    // Create an instance of MarshalbyRefType in the second AppDomain. 
    // A proxy to the object is returned.
    MarshalByRefType^ mbrt = 
        (MarshalByRefType^) ad2->CreateInstanceAndUnwrap(
            exeAssembly, 
            MarshalByRefType::typeid->FullName
        );

    // Call a method on the object via the proxy, passing the 
    // default AppDomain's friendly name in as a parameter.
    mbrt->SomeMethod(callingDomainName);

    // Unload the second AppDomain. This deletes its object and 
    // invalidates the proxy object.
    AppDomain::Unload(ad2);
    try
    {
        // Call the method again. Note that this time it fails 
        // because the second AppDomain was unloaded.
        mbrt->SomeMethod(callingDomainName);
        Console::WriteLine("Sucessful call.");
    }
    catch(AppDomainUnloadedException^)
    {
        Console::WriteLine("Failed call; this is expected.");
    }
}

/* This code produces output similar to the following: 

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */
using System;
using System.Reflection;
using System.Threading;

class Module1
{
    public static void Main()
    {
        // Get and display the friendly name of the default AppDomain.
        string callingDomainName = Thread.GetDomain().FriendlyName;
        Console.WriteLine(callingDomainName);

        // Get and display the full name of the EXE assembly.
        string exeAssembly = Assembly.GetEntryAssembly().FullName;
        Console.WriteLine(exeAssembly);

        // Construct and initialize settings for a second AppDomain.
        AppDomainSetup ads = new AppDomainSetup();
        ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;

        ads.DisallowBindingRedirects = false;
        ads.DisallowCodeDownload = true;
        ads.ConfigurationFile =
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

        // Create the second AppDomain.
        AppDomain ad2 = AppDomain.CreateDomain("AD #2", null, ads);

        // Create an instance of MarshalbyRefType in the second AppDomain.
        // A proxy to the object is returned.
        MarshalByRefType mbrt =
            (MarshalByRefType) ad2.CreateInstanceAndUnwrap(
                exeAssembly,
                typeof(MarshalByRefType).FullName
            );

        // Call a method on the object via the proxy, passing the
        // default AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName);

        // Unload the second AppDomain. This deletes its object and
        // invalidates the proxy object.
        AppDomain.Unload(ad2);
        try
        {
            // Call the method again. Note that this time it fails
            // because the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName);
            Console.WriteLine("Sucessful call.");
        }
        catch(AppDomainUnloadedException)
        {
            Console.WriteLine("Failed call; this is expected.");
        }
    }
}

// Because this class is derived from MarshalByRefObject, a proxy
// to a MarshalByRefType object can be returned across an AppDomain
// boundary.
public class MarshalByRefType : MarshalByRefObject
{
    //  Call this method via a proxy.
    public void SomeMethod(string callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
            ads.ApplicationName,
            ads.ApplicationBase,
            ads.ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name
        // of the second domain.
        // NOTE: The application's thread has transitioned between
        // AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.",
            callingDomainName,
            Thread.GetDomain().FriendlyName
        );
    }
}

/* This code produces output similar to the following:

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */
open System
open System.Reflection
open System.Threading

// Because this class is derived from MarshalByRefObject, a proxy
// to a MarshalByRefType object can be returned across an AppDomain
// boundary.
type MarshalByRefType() =
    inherit MarshalByRefObject()
    
    //  Call this method via a proxy.
    member _.SomeMethod(callingDomainName) =
        // Get this AppDomain's settings and display some of them.
        let ads = AppDomain.CurrentDomain.SetupInformation
        printfn $"AppName={ads.ApplicationName}, AppBase={ads.ApplicationBase}, ConfigFile={ads.ConfigurationFile}"

        // Display the name of the calling AppDomain and the name
        // of the second domain.
        // NOTE: The application's thread has transitioned between
        // AppDomains.
        printfn $"Calling from '{callingDomainName}' to '{Thread.GetDomain().FriendlyName}'."

// Get and display the friendly name of the default AppDomain.
let callingDomainName = Thread.GetDomain().FriendlyName
printfn $"{callingDomainName}"

// Get and display the full name of the EXE assembly.
let exeAssembly = Assembly.GetEntryAssembly().FullName
printfn $"{exeAssembly}"

// Construct and initialize settings for a second AppDomain.
let ads = AppDomainSetup()
ads.ApplicationBase <- AppDomain.CurrentDomain.BaseDirectory

ads.DisallowBindingRedirects <- false
ads.DisallowCodeDownload <- true
ads.ConfigurationFile <-
    AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

// Create the second AppDomain.
let ad2 = AppDomain.CreateDomain("AD #2", null, ads)

// Create an instance of MarshalbyRefType in the second AppDomain.
// A proxy to the object is returned.
let mbrt =
    ad2.CreateInstanceAndUnwrap(
        exeAssembly,
        typeof<MarshalByRefType>.FullName) :?> MarshalByRefType

// Call a method on the object via the proxy, passing the
// default AppDomain's friendly name in as a parameter.
mbrt.SomeMethod callingDomainName

// Unload the second AppDomain. This deletes its object and
// invalidates the proxy object.
AppDomain.Unload ad2
try
    // Call the method again. Note that this time it fails
    // because the second AppDomain was unloaded.
    mbrt.SomeMethod callingDomainName
    printfn "Sucessful call."
with :? AppDomainUnloadedException ->
    printfn "Failed call this is expected."

(* This code produces output similar to the following:

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call this is expected.
 *)
Imports System.Reflection
Imports System.Threading

Module Module1
    Sub Main()

        ' Get and display the friendly name of the default AppDomain.
        Dim callingDomainName As String = Thread.GetDomain().FriendlyName
        Console.WriteLine(callingDomainName)

        ' Get and display the full name of the EXE assembly.
        Dim exeAssembly As String = [Assembly].GetEntryAssembly().FullName
        Console.WriteLine(exeAssembly)

        ' Construct and initialize settings for a second AppDomain.
        Dim ads As New AppDomainSetup()
        ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory
        ads.DisallowBindingRedirects = False
        ads.DisallowCodeDownload = True
        ads.ConfigurationFile = _
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

        ' Create the second AppDomain.
        Dim ad2 As AppDomain = AppDomain.CreateDomain("AD #2", Nothing, ads)

        ' Create an instance of MarshalbyRefType in the second AppDomain. 
        ' A proxy to the object is returned.
        Dim mbrt As MarshalByRefType = CType( _
            ad2.CreateInstanceAndUnwrap(exeAssembly, _
                 GetType(MarshalByRefType).FullName), MarshalByRefType)

        ' Call a method on the object via the proxy, passing the default 
        ' AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName)

        ' Unload the second AppDomain. This deletes its object and 
        ' invalidates the proxy object.
        AppDomain.Unload(ad2)
        Try
            ' Call the method again. Note that this time it fails because 
            ' the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName)
            Console.WriteLine("Sucessful call.")
        Catch e As AppDomainUnloadedException
            Console.WriteLine("Failed call; this is expected.")
        End Try

    End Sub
End Module

' Because this class is derived from MarshalByRefObject, a proxy 
' to a MarshalByRefType object can be returned across an AppDomain 
' boundary.
Public Class MarshalByRefType
    Inherits MarshalByRefObject

    '  Call this method via a proxy.
    Public Sub SomeMethod(ByVal callingDomainName As String)

        ' Get this AppDomain's settings and display some of them.
        Dim ads As AppDomainSetup = AppDomain.CurrentDomain.SetupInformation
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", _
            ads.ApplicationName, ads.ApplicationBase, ads.ConfigurationFile)

        ' Display the name of the calling AppDomain and the name 
        ' of the second domain.
        ' NOTE: The application's thread has transitioned between 
        ' AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.", _
            callingDomainName, Thread.GetDomain().FriendlyName)
    End Sub
End Class

'This code produces output similar to the following:
' 
' AppDomainX.exe
' AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
' AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
' Calling from 'AppDomainX.exe' to 'AD #2'.
' Failed call; this is expected.

Комментарии

Домены приложений, представленные AppDomain объектами, помогают обеспечить изоляцию, выгрузку и границы безопасности для выполнения управляемого кода.

  • Используйте домены приложений для изоляции задач, которые могут привести к сносу процесса. Если состояние AppDomain выполнения задачи становится неустойчивым, AppDomain его можно выгрузить, не влияя на процесс. Это важно, если процесс должен выполняться в течение длительного периода без перезапуска. Вы также можете использовать домены приложений для изоляции задач, которые не должны совместно использовать данные.
  • Если сборка загружается в домен приложения по умолчанию, ее нельзя выгрузить из памяти во время выполнения процесса. Однако если открыть второй домен приложения для загрузки и выполнения сборки, сборка выгружается при выгрузке этого домена приложения. Этот метод позволяет свести к минимуму рабочий набор длительных процессов, которые иногда используют большие библиотеки DLL.

Замечание

В .NET Core и .NET 5+ AppDomain реализация ограничена проектированием и не обеспечивает изоляцию, выгрузку или границы безопасности. Эти версии имеют ровно одну AppDomain. Изоляция и выгрузка предоставляются через AssemblyLoadContext. Границы безопасности должны быть предоставлены границами процесса и соответствующими методами удаленного взаимодействия.

Несколько доменов приложений могут выполняться в одном процессе; однако между доменами приложений и потоками не существует корреляции между доменами приложений и потоками. Несколько потоков могут принадлежать одному домену приложения, и хотя данный поток не ограничивается одним доменом приложения в любой момент времени, поток выполняется в одном домене приложения.

Домены приложений CreateDomain создаются с помощью метода. AppDomain экземпляры используются для загрузки и выполнения сборок (Assembly). AppDomain Если он больше не используется, его можно выгрузить.

Класс AppDomain реализует набор событий, позволяющих приложениям реагировать при загрузке сборки, когда домен приложения будет выгружен или при возникновении необработанного исключения.

Дополнительные сведения об использовании доменов приложений см. в разделе "Домены приложений".

Этот класс реализует MarshalByRefObject_AppDomainинтерфейсы , а также IEvidenceFactory интерфейсы.

Никогда не следует создавать переносимую оболочку для AppDomain объекта. Это может опубликовать удаленную ссылку на это AppDomain, предоставляя такие методы, как CreateInstance удаленный доступ и эффективно уничтожая безопасность доступа к коду для этого AppDomain. Злоумышленники, подключающиеся к удаленному, AppDomain могут получить доступ к любому ресурсу, AppDomain к которому имеется доступ. Не создавайте ремотируемые оболочки для любого типа, расширяющегося MarshalByRefObject и реализующего методы, которые могут использоваться вредоносными клиентами для обхода системы безопасности.

Предостережение

Значение по умолчанию для AppDomainSetup.DisallowCodeDownload свойства false. Этот параметр небезопасн для служб. Чтобы предотвратить загрузку частично доверенного кода служб, задайте для этого свойства значение true.

Свойства

Имя Описание
ActivationContext

Возвращает контекст активации для текущего домена приложения.

ApplicationIdentity

Возвращает удостоверение приложения в домене приложения.

ApplicationTrust

Получает сведения о разрешениях, предоставленных приложению, и о том, имеет ли приложение уровень доверия, позволяющий запускать его.

BaseDirectory

Возвращает базовый каталог, который сопоставитель сборок использует для проверки сборок.

CurrentDomain

Возвращает текущий домен приложения для текущего Thread.

DomainManager

Возвращает диспетчер домена, предоставленный узлом при инициализации домена приложения.

DynamicDirectory

Возвращает каталог, который сопоставитель сборок использует для проверки динамически созданных сборок.

Evidence

Возвращает связанный Evidence с этим доменом приложения.

FriendlyName

Возвращает понятное имя этого домена приложения.

Id

Возвращает целое число, которое однозначно идентифицирует домен приложения в процессе.

IsFullyTrusted

Возвращает значение, указывающее, выполняются ли сборки, загруженные в текущий домен приложения с полным доверием.

IsHomogenous

Возвращает значение, указывающее, имеет ли текущий домен приложения набор разрешений, предоставленных всем сборкам, загруженным в домен приложения.

MonitoringIsEnabled

Возвращает или задает значение, указывающее, включен ли мониторинг ЦП и памяти доменов приложений для текущего процесса. После включения мониторинга для процесса его нельзя отключить.

MonitoringSurvivedMemorySize

Возвращает количество байтов, которые пережили последнюю коллекцию, и которые, как известно, ссылаются на текущий домен приложения.

MonitoringSurvivedProcessMemorySize

Возвращает общее количество байтов, которые выжили из последней коллекции для всех доменов приложений в процессе.

MonitoringTotalAllocatedMemorySize

Получает общий размер (в байтах) всех выделений памяти, сделанных доменом приложения с момента его создания, без вычитания памяти, собранной.

MonitoringTotalProcessorTime

Возвращает общее время процессора, которое использовалось всеми потоками при выполнении в текущем домене приложения с момента запуска процесса.

PermissionSet
Устаревшие..

Возвращает набор разрешений изолированного домена приложения.

RelativeSearchPath

Получает путь в базовом каталоге, где сопоставитель сборок должен проверять частные сборки.

SetupInformation

Возвращает сведения о конфигурации домена приложения для этого экземпляра.

ShadowCopyFiles

Получает указание, настроен ли домен приложения для теневого копирования файлов.

Методы

Имя Описание
AppendPrivatePath(String)
Устаревшие..
Устаревшие..
Устаревшие..

Добавляет указанное имя каталога в список частных путей.

ApplyPolicy(String)

Возвращает отображаемое имя сборки после применения политики.

ClearPrivatePath()
Устаревшие..
Устаревшие..
Устаревшие..

Сбрасывает путь, указывающий расположение частных сборок на пустую строку ("").

ClearShadowCopyPath()
Устаревшие..
Устаревшие..
Устаревшие..

Сбрасывает список каталогов, содержащих теневые скопированные сборки, в пустую строку ("").

CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)

Создает новый экземпляр указанного типа COM. Параметры указывают имя файла, содержащего сборку, содержащую тип и имя типа.

CreateComInstanceFrom(String, String)

Создает новый экземпляр указанного типа COM. Параметры указывают имя файла, содержащего сборку, содержащую тип и имя типа.

CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])

Создает домен приложения, используя указанное имя, доказательства, сведения о настройке домена приложения, набор разрешений по умолчанию и массив полностью доверенных сборок.

CreateDomain(String, Evidence, AppDomainSetup)

Создает новый домен приложения с помощью указанных имен, доказательств и сведений о настройке домена приложения.

CreateDomain(String, Evidence, String, String, Boolean, AppDomainInitializer, String[])

Создает домен приложения с заданным именем, используя доказательства, базовый путь приложения, относительный путь поиска и параметр, указывающий, должна ли теневая копия сборки загружаться в домен приложения. Указывает метод обратного вызова, который вызывается при инициализации домена приложения, и массив строковых аргументов для передачи метода обратного вызова.

CreateDomain(String, Evidence, String, String, Boolean)

Создает домен приложения с заданным именем, используя доказательства, базовый путь приложения, относительный путь поиска и параметр, указывающий, должна ли теневая копия сборки загружаться в домен приложения.

CreateDomain(String, Evidence)

Создает домен приложения с заданным именем, используя предоставленные доказательства.

CreateDomain(String)
Устаревшие..

Создает новый домен приложения с указанным именем.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Устаревшие..

Создает новый экземпляр указанного типа, определенного в указанной сборке. Параметры указывают привязку, флаги привязки, аргументы конструктора, сведения о языке и региональных параметрах, используемые для интерпретации аргументов, атрибутов активации и авторизации для создания типа.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр указанного типа, определенного в указанной сборке. Параметры указывают привязку, флаги привязки, аргументы конструктора, сведения о языке и региональных параметрах, используемые для интерпретации аргументов и необязательные атрибуты активации.

CreateInstance(String, String, Object[])

Создает новый экземпляр указанного типа, определенного в указанной сборке. Параметр задает массив атрибутов активации.

CreateInstance(String, String)

Создает новый экземпляр указанного типа, определенного в указанной сборке.

CreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Устаревшие..

Создает новый экземпляр указанного типа. Параметры указывают имя типа и способ его обнаружения и создания.

CreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр указанного типа, определенного в указанной сборке, указывая, игнорируется ли регистр имени типа; атрибуты привязки и привязка, которые используются для выбора создаваемого типа; аргументы конструктора; язык и региональные параметры; и атрибуты активации.

CreateInstanceAndUnwrap(String, String, Object[])

Создает новый экземпляр указанного типа. Параметры указывают сборку, в которой определен тип, имя типа и массив атрибутов активации.

CreateInstanceAndUnwrap(String, String)

Создает новый экземпляр указанного типа. Параметры указывают сборку, в которой определен тип, и имя типа.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Устаревшие..

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFrom(String, String, Object[])

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFrom(String, String)

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Устаревшие..

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр указанного типа, определенного в указанном файле сборки, указывая, игнорируется ли регистр имени типа; атрибуты привязки и привязка, которые используются для выбора создаваемого типа; аргументы конструктора; язык и региональные параметры; и атрибуты активации.

CreateInstanceFromAndUnwrap(String, String, Object[])

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateInstanceFromAndUnwrap(String, String)

Создает новый экземпляр указанного типа, определенного в указанном файле сборки.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
Устаревшие..

Определяет динамическую сборку, используя указанное имя, режим доступа, доказательства и запросы разрешений.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Устаревшие..

Определяет динамическую сборку, используя указанное имя, режим доступа и доказательства.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)

Определяет динамическую сборку с указанным именем, режимом доступа и настраиваемыми атрибутами, а также с помощью указанного источника для контекста безопасности.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Определяет динамическую сборку с указанным именем, режимом доступа и пользовательскими атрибутами.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)
Устаревшие..

Определяет динамическую сборку с помощью указанного имени, режима доступа и запросов разрешений.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)

Определяет динамическую сборку с помощью указанного имени, режима доступа, каталога хранилища и параметра синхронизации.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Устаревшие..

Определяет динамическую сборку с указанным именем, режимом доступа, каталогом хранилища, доказательствами, запросами разрешений, параметром синхронизации и пользовательскими атрибутами.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
Устаревшие..

Определяет динамическую сборку, используя указанное имя, режим доступа, каталог хранилища, доказательства, запросы разрешений и параметр синхронизации.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
Устаревшие..

Определяет динамическую сборку, используя указанное имя, режим доступа, каталог хранилища, доказательства и запросы разрешений.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)
Устаревшие..

Определяет динамическую сборку, используя указанное имя, режим доступа, каталог хранилища и доказательства.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
Устаревшие..

Определяет динамическую сборку с помощью указанного имени, режима доступа, каталога хранилища и запросов разрешений.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Определяет динамическую сборку с помощью указанного имени, режима доступа и каталога хранилища.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Определяет динамическую сборку с указанным именем и режимом доступа.

DoCallBack(CrossAppDomainDelegate)

Выполняет код в другом домене приложения, который определяется указанным делегатом.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
ExecuteAssembly(String, Evidence, String[], Byte[], AssemblyHashAlgorithm)
Устаревшие..

Выполняет сборку, содержащуюся в указанном файле, используя указанные доказательства, аргументы, хэш-значение и хэш-алгоритм.

ExecuteAssembly(String, Evidence, String[])
Устаревшие..

Выполняет сборку, содержащуюся в указанном файле, используя указанные доказательства и аргументы.

ExecuteAssembly(String, Evidence)
Устаревшие..

Выполняет сборку, содержащуюся в указанном файле, используя указанные доказательства.

ExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm)
Устаревшие..

Выполняет сборку, содержащуюся в указанном файле, используя указанные аргументы, хэш-значение и хэш-алгоритм.

ExecuteAssembly(String, String[])

Выполняет сборку, содержащуюся в указанном файле, с помощью указанных аргументов.

ExecuteAssembly(String)

Выполняет сборку, содержащуюся в указанном файле.

ExecuteAssemblyByName(AssemblyName, Evidence, String[])
Устаревшие..

Выполняет сборку, заданную AssemblyNameс использованием указанных доказательств и аргументов.

ExecuteAssemblyByName(AssemblyName, String[])

Выполняет сборку, заданную AssemblyNameс помощью указанных аргументов.

ExecuteAssemblyByName(String, Evidence, String[])
Устаревшие..

Выполняет сборку, указав отображаемое имя, используя указанные доказательства и аргументы.

ExecuteAssemblyByName(String, Evidence)
Устаревшие..

Выполняет сборку с отображаемым именем, используя указанные доказательства.

ExecuteAssemblyByName(String, String[])

Выполняет сборку с отображаемым именем, используя указанные аргументы.

ExecuteAssemblyByName(String)

Выполняет сборку с отображаемым именем.

GetAssemblies()

Возвращает сборки, загруженные в контекст выполнения этого домена приложения.

GetCurrentThreadId()
Устаревшие..
Устаревшие..
Устаревшие..
Устаревшие..

Возвращает текущий идентификатор потока.

GetData(String)

Возвращает значение, хранящееся в текущем домене приложения для указанного имени.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает тип текущего экземпляра.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()

Дает бесконечное AppDomain время существования, предотвращая создание аренды.

InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
IsCompatibilitySwitchSet(String)

Возвращает логическое значение, допускающее значение NULL, указывающее, заданы ли какие-либо коммутаторы совместимости и если да, задан ли указанный параметр совместимости.

IsDefaultAppDomain()

Возвращает значение, указывающее, является ли домен приложения доменом приложения по умолчанию для процесса.

IsFinalizingForUnload()

Указывает, выгружается ли этот домен приложения, и объекты, содержащиеся в нем, завершаются средой CLR.

Load(AssemblyName, Evidence)
Устаревшие..

Загружает заданный Assembly объект AssemblyName.

Load(AssemblyName)

Загружает заданный Assembly объект AssemblyName.

Load(Byte[], Byte[], Evidence)
Устаревшие..

Assembly Загружает образ с общим форматом файлов объектов (COFF), содержащим создаваемый Assemblyобъект. Необработанные байты, представляющие символы для этого Assembly , также загружаются.

Load(Byte[], Byte[])

Assembly Загружает образ с общим форматом файлов объектов (COFF), содержащим создаваемый Assemblyобъект. Необработанные байты, представляющие символы для этого Assembly , также загружаются.

Load(Byte[])

Assembly Загружает образ с общим форматом файлов объектов (COFF), содержащим создаваемый Assemblyобъект.

Load(String, Evidence)
Устаревшие..

Загружает заданное Assembly отображаемое имя.

Load(String)

Загружает заданное Assembly отображаемое имя.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ReflectionOnlyGetAssemblies()

Возвращает сборки, загруженные в контекст только отражения домена приложения.

SetAppDomainPolicy(PolicyLevel)
Устаревшие..

Устанавливает уровень политики безопасности для этого домена приложения.

SetCachePath(String)
Устаревшие..
Устаревшие..
Устаревшие..

Устанавливает указанный путь к каталогу в качестве расположения, в котором сборки копируются теневыми копиями.

SetData(String, Object, IPermission)

Назначает указанное значение указанному свойству домена приложения с указанным разрешением на запрос вызывающего объекта при получении свойства.

SetData(String, Object)

Назначает указанное значение указанному свойству домена приложения.

SetDynamicBase(String)
Устаревшие..
Устаревшие..
Устаревшие..

Устанавливает указанный путь к каталогу в качестве базового каталога для подкаталогов, где динамически созданные файлы хранятся и получают доступ.

SetPrincipalPolicy(PrincipalPolicy)

Указывает, как субъект и объекты удостоверений должны быть присоединены к потоку, если поток пытается привязаться к субъекту во время выполнения в этом домене приложения.

SetShadowCopyFiles()
Устаревшие..
Устаревшие..
Устаревшие..

Включает теневое копирование.

SetShadowCopyPath(String)
Устаревшие..
Устаревшие..
Устаревшие..

Устанавливает указанный путь к каталогу в качестве расположения сборок для копирования тени.

SetThreadPrincipal(IPrincipal)

Задает основной объект по умолчанию для подключения к потокам, если они пытаются привязаться к субъекту во время выполнения в этом домене приложения.

ToString()

Получает строковое представление, включающее понятное имя домена приложения и любые политики контекста.

Unload(AppDomain)
Устаревшие..

Выгружает указанный домен приложения.

События

Имя Описание
AssemblyLoad

Происходит при загрузке сборки.

AssemblyResolve

Происходит при сбое разрешения сборки.

DomainUnload

Происходит при AppDomain выгрузке.

FirstChanceException

Возникает при возникновении исключения в управляемом коде, прежде чем среда выполнения выполняет поиск стека вызовов для обработчика исключений в домене приложения.

ProcessExit

Происходит при выходе родительского процесса родительского процесса домена приложения по умолчанию.

ReflectionOnlyAssemblyResolve

Происходит, когда разрешение сборки завершается ошибкой в контексте только для отражения.

ResourceResolve

Происходит при сбое разрешения ресурса, так как ресурс не является допустимым связанным или внедренным ресурсом в сборке.

TypeResolve

Происходит при сбое разрешения типа.

UnhandledException

Происходит, когда исключение не поймано.

Явные реализации интерфейса

Имя Описание
_AppDomain.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

_AppDomain.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.

_AppDomain.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

_AppDomain.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

Применяется к

См. также раздел