Esporta (0) Stampa
Espandi tutto

Classe AppDomainManager

Fornisce un equivalente gestito di un host non gestito.

Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)] 
public class AppDomainManager : MarshalByRefObject
/** @attribute ComVisibleAttribute(true) */ 
public class AppDomainManager extends MarshalByRefObject
ComVisibleAttribute(true) 
public class AppDomainManager extends MarshalByRefObject
Non applicabile.

L'implementazione della classe AppDomainManager consente a un'applicazione host di partecipare alla creazione di nuovi domini applicazione. Per sostituire la classe AppDomainManager predefinita, identificare l'assembly e il tipo della sostituzione di AppDomainManager nelle variabili di ambiente APPDOMAIN_MANAGER_ASM e APPDOMAIN_MANAGER_TYPE. L'assembly deve essere completamente attendibile e deve essere contenuto nella Global Assembly Cache oppure nella directory dell'applicazione di avvio. I nomi di tipo e di assembly devono essere completi nelle variabili di ambiente. Esempio:

set APPDOMAIN_MANAGER_TYPE=MyNamespace.TestAppDomainManager

set APPDOMAIN_MANAGER_ASM=customappDomainmanager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72

L'oggetto AppDomainManager è l'equivalente gestito dell'host non gestito. Un oggetto AppDomainManager partecipa alla creazione di nuovi domini applicazione in un processo e può personalizzare il nuovo oggetto AppDomain prima dell'esecuzione di altro codice gestito. L'oggetto AppDomainManager può inoltre fornire gestori host che partecipano ad altri aspetti dell'esecuzione di Common Language Runtime. Un oggetto AppDomainManager ad esempio può identificare un oggetto HostSecurityManager che partecipa al processo decisionale sulla sicurezza del dominio applicazione.

NotaNota:

Solo gli assembly cui è stato concesso il privilegio FullTrust, ad esempio quelli della Global Assembly Cache o identificati come fullTrustAssemblies nel metodo AppDomain.CreateDomain(String,Evidence,AppDomainSetup,PermissionSet,StrongName[]) possono essere caricati nel costruttore AppDomainManager e nel metodo InitializeNewDomain.

NotaNota:

Questa classe contiene una richiesta di collegamento e una richiesta di eredità a livello di classe. Un'eccezione SecurityException viene generata quando il chiamante immediato o la classe derivata non dispone delle autorizzazioni di infrastruttura. Per maggiori dettagli sulle richieste di sicurezza, vedere Pretese di collegamento e Pretese di ereditarietà.

Nell'esempio di codice riportato di seguito viene illustrata un'implementazione molto semplice di AppDomainManager.

// To replace the default AppDomainManager, identify  the 
// replacement assembly and replacement type in the 
// APPDOMAIN_MANAGER_ASM and APPDOMAIN_MANAGER_TYPE  
// environment variables. For example:
// set APPDOMAIN_MANAGER_TYPE=library.TestAppDomainManager
// set APPDOMAIN_MANAGER_ASM=library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f1368f7b12a08d72

using System;
using System.Collections;
using System.Net;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Security.Principal;
using System.Threading;
using System.Runtime.InteropServices;

[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]

namespace MyNamespace
{
    [GuidAttribute("F4D15099-3407-4A7E-A607-DEA440CF3891")]
    [SecurityPermissionAttribute(SecurityAction.LinkDemand, 
        Flags = SecurityPermissionFlag.Infrastructure)]
    [SecurityPermissionAttribute(SecurityAction.InheritanceDemand, 
        Flags = SecurityPermissionFlag.Infrastructure)]
    public class MyAppDomainManager : AppDomainManager
    {
        private HostSecurityManager mySecurityManager = null;

        public MyAppDomainManager()
        {
            Console.WriteLine(" My AppDomain Manager ");
            mySecurityManager = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(
                "CustomSecurityManager, Version=1.0.0.3, Culture=neutral, " +
                "PublicKeyToken=5659fc598c2a503e", 
                "MyNamespace.MySecurityManager") as HostSecurityManager;
            Console.WriteLine(" Custom Security Manager Created.");
        }

        public override void InitializeNewDomain(AppDomainSetup appDomainInfo)
        {
            Console.Write("Initialize new domain called:  ");
            Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
            InitializationFlags = 
                AppDomainManagerInitializationOptions.RegisterWithHost;
        }

        public override HostSecurityManager HostSecurityManager
        {
            get
            {
                return mySecurityManager;
            }
        }
    }
}

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:

XNA Framework

Supportato in:

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft