2 // System.AppDomainManager class
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2004-2005,2009 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System
.Reflection
;
30 using System
.Runtime
.Hosting
;
31 using System
.Runtime
.InteropServices
;
32 using System
.Security
;
33 using System
.Security
.Permissions
;
34 using System
.Security
.Policy
;
35 using System
.Threading
;
39 #if MONO_FEATURE_MULTIPLE_APPDOMAINS
41 [SecurityPermission (SecurityAction
.LinkDemand
, Infrastructure
= true)]
42 [SecurityPermission (SecurityAction
.InheritanceDemand
, Infrastructure
= true)]
43 public class AppDomainManager
: MarshalByRefObject
{
44 private ApplicationActivator _activator
;
45 private AppDomainManagerInitializationOptions _flags
;
47 public AppDomainManager ()
49 _flags
= AppDomainManagerInitializationOptions
.None
;
52 public virtual ApplicationActivator ApplicationActivator
{
54 if (_activator
== null)
55 _activator
= new ApplicationActivator ();
60 public virtual Assembly EntryAssembly
{
61 get { return Assembly.GetEntryAssembly (); }
65 public virtual HostExecutionContextManager HostExecutionContextManager
{
66 get { throw new NotImplementedException (); }
69 public virtual HostSecurityManager HostSecurityManager
{
73 public AppDomainManagerInitializationOptions InitializationFlags
{
74 get { return _flags; }
75 set { _flags = value; }
80 public virtual AppDomain
CreateDomain (string friendlyName
, Evidence securityInfo
, AppDomainSetup appDomainInfo
)
82 InitializeNewDomain (appDomainInfo
);
83 AppDomain ad
= CreateDomainHelper (friendlyName
, securityInfo
, appDomainInfo
);
85 // supply app domain policy ?
86 if ((HostSecurityManager
.Flags
& HostSecurityManagerOptions
.HostPolicyLevel
) == HostSecurityManagerOptions
.HostPolicyLevel
) {
87 PolicyLevel pl
= HostSecurityManager
.DomainPolicy
;
89 ad
.SetAppDomainPolicy (pl
);
96 public virtual void InitializeNewDomain (AppDomainSetup appDomainInfo
)
98 // default does nothing (as documented)
101 // available in FX2.0 with service pack 1, including the 2.0 shipped as part of FX3.5
102 public virtual bool CheckSecuritySettings (SecurityState state
)
109 // FIXME: maybe AppDomain.CreateDomain should be calling this?
110 protected static AppDomain
CreateDomainHelper (string friendlyName
, Evidence securityInfo
, AppDomainSetup appDomainInfo
)
112 return AppDomain
.CreateDomain (friendlyName
, securityInfo
, appDomainInfo
);
116 [Obsolete ("AppDomainManager is not supported on the current platform.", true)]
117 public class AppDomainManager
: MarshalByRefObject
{
118 public AppDomainManager ()
120 throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
123 public virtual ApplicationActivator ApplicationActivator
{
124 get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
127 public virtual Assembly EntryAssembly
{
128 get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
131 public virtual HostExecutionContextManager HostExecutionContextManager
{
132 get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
135 public virtual HostSecurityManager HostSecurityManager
{
136 get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
139 public AppDomainManagerInitializationOptions InitializationFlags
{
140 get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
141 set { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
144 public virtual AppDomain
CreateDomain (string friendlyName
, Evidence securityInfo
, AppDomainSetup appDomainInfo
)
146 throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
149 public virtual void InitializeNewDomain (AppDomainSetup appDomainInfo
)
151 throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
154 public virtual bool CheckSecuritySettings (SecurityState state
)
156 throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
159 protected static AppDomain
CreateDomainHelper (string friendlyName
, Evidence securityInfo
, AppDomainSetup appDomainInfo
)
161 throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
165 #endif // MONO_FEATURE_MULTIPLE_APPDOMAINS