download AppDomainSetup.cs
Language: C#
Copyright: (C) 2004-2005 Novell, Inc (http://www.novell.com) (C) 2001 Ximian, Inc. http://www.ximian.com
LOC: 216
Project Info
mcs
Server: Mono
Type: svn
...cs\mcs\class\corlib\System\
   __ComObject.cs
   _AppDomain.cs
   ...ssViolationException.cs
   Action.cs
   ActivationContext.cs
   Activator.cs
   AppDomain.cs
   AppDomainInitializer.cs
   AppDomainManager.cs
   AppDomainSetup.cs
   ...ainUnloadedException.cs
   ApplicationException.cs
   ApplicationId.cs
   ApplicationIdentity.cs
   ArgIterator.cs
   ArgumentException.cs
   ArgumentNullException.cs
   ...tOutOfRangeException.cs
   ArithmeticException.cs
   Array.cs
   ArraySegment.cs
   ...ypeMismatchException.cs
   AssemblyLoadEventArgs.cs
   ...mblyLoadEventHandler.cs
   AsyncCallback.cs
   Attribute.cs
   AttributeTargets.cs
   AttributeUsageAttribute.cs
   BadImageFormatException.cs
   Base64FormattingOptions.cs
   BitConverter.cs
   Boolean.cs
   Buffer.cs
   Byte.cs
   ...adAppDomainException.cs
   Char.cs
   CharEnumerator.cs
   CLSCompliantAttribute.cs
   Comparison.cs
   Console.cs
   ConsoleCancelEventArgs.cs
   ...leCancelEventHandler.cs
   ConsoleColor.cs
   ConsoleDriver.cs
   ConsoleKey.cs
   ConsoleKeyInfo.cs
   ConsoleModifiers.cs
   ConsoleSpecialKey.cs
   ContextBoundObject.cs
   ContextMarshalException.cs
   ContextStaticAttribute.cs
   Convert.cs
   Converter.cs
   CrossAppDomainDelegate.cs
   DataMisalignedException.cs
   DateTime.cs
   DateTimeKind.cs
   DayOfWeek.cs
   DBNull.cs
   Decimal.cs
   Delegate.cs
   ...eSerializationHolder.cs
   DivideByZeroException.cs
   DllNotFoundException.cs
   ...rInitializationFlags.cs
   Double.cs
   ...eWaitObjectException.cs
   ...intNotFoundException.cs
   Enum.cs
   Environment.cs
   ...onmentVariableTarget.cs
   EventArgs.cs
   EventHandler.cs
   Exception.cs
   ...utionEngineException.cs
   FieldAccessException.cs
   FlagsAttribute.cs
   FormatException.cs
   GC.cs
   Guid.cs
   IAppDomainSetup.cs
   IApplicationDescription.cs
   IAsyncResult.cs
   ICloneable.cs
   IComparable.cs
   IConsoleDriver.cs
   IConvertible.cs
   ICustomFormatter.cs
   IDisposable.cs
   IEquatable.cs
   IFormatProvider.cs
   IFormattable.cs
   IHostContext.cs
   ...xOutOfRangeException.cs
   Int16.cs
   Int32.cs
   Int64.cs
   IntPtr.cs
   INullableValue.cs
   InvalidCastException.cs
   ...idOperationException.cs
   InvalidProgramException.cs
   IServiceProvider.cs
   KnownTerminals.cs
   LoaderOptimization.cs
   ...ptimizationAttribute.cs
   LocalDataStoreSlot.cs
   MarshalByRefObject.cs
   Math.cs
   MemberAccessException.cs
   MethodAccessException.cs
   MidpointRounding.cs
   MissingFieldException.cs
   MissingMemberException.cs
   MissingMethodException.cs
   ModuleHandle.cs
   MonoAsyncCall.cs
   MonoCustomAttrs.cs
   MonoType.cs
   MTAThreadAttribute.cs
   MulticastDelegate.cs
   ...otSupportedException.cs
   NonSerializedAttribute.cs
   NotCancelableException.cs
   ...initeNumberException.cs
   NotImplementedException.cs
   NotSupportedException.cs
   Nullable.cs
   NullReferenceException.cs
   NumberFormatter.cs
   Object.cs
   ObjectDisposedException.cs
   ObsoleteAttribute.cs
   OperatingSystem.cs
   ...ionCanceledException.cs
   OutOfMemoryException.cs
   OverflowException.cs
   ParamArrayAttribute.cs
   PlatformID.cs
   ...otSupportedException.cs
   Predicate.cs
   Random.cs
   RankException.cs
   ResolveEventArgs.cs
   ResolveEventHandler.cs
   RuntimeArgumentHandle.cs
   RuntimeFieldHandle.cs
   RuntimeMethodHandle.cs
   RuntimeTypeHandle.cs
   SByte.cs
   SerializableAttribute.cs
   Single.cs
   StackOverflowException.cs
   STAThreadAttribute.cs
   String.cs
   StringComparer.cs
   StringComparison.cs
   StringSplitOptions.cs
   SystemException.cs
   TermInfoBooleans.cs
   TermInfoDriver.cs
   TermInfoNumbers.cs
   TermInfoReader.cs
   TermInfoStrings.cs
   ThreadStaticAttribute.cs
   TimeoutException.cs
   TimeSpan.cs
   TimeZone.cs
   Type.cs
   TypeCode.cs
   TypedReference.cs
   ...tializationException.cs
   TypeLoadException.cs
   TypeUnloadedException.cs
   UInt16.cs
   UInt32.cs
   UInt64.cs
   UIntPtr.cs
   ...rizedAccessException.cs
   ...edExceptionEventArgs.cs
   ...xceptionEventHandler.cs
   ...ySerializationHolder.cs
   ValueType.cs
   Variant.cs
   Version.cs
   Void.cs
   WeakReference.cs
   WindowsConsoleDriver.cs

//
// System.AppDomainSetup.cs
//
// Authors:
//	Dietmar Maurer (dietmar@ximian.com)
//	Sebastien Pouliot  <sebastien@ximian.com>
//
// (C) 2001 Ximian, Inc.  http://www.ximian.com
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

#if NET_2_0
using System.Runtime.Hosting;
#endif

namespace System
{
	[Serializable]
	[ClassInterface (ClassInterfaceType.None)]
	[MonoTODO ("Fix serialization compatibility with MS.NET")]
#if NET_2_0
	[ComVisible (true)]
#endif
	public sealed class AppDomainSetup : IAppDomainSetup
	{
		string application_base;
		string application_name;
		string cache_path;
		string configuration_file;
		string dynamic_base;
		string license_file;
		string private_bin_path;
		string private_bin_path_probe;
		string shadow_copy_directories;
		string shadow_copy_files;
		bool publisher_policy;
		private bool path_changed;
		private LoaderOptimization loader_optimization;
		bool disallow_binding_redirects;
		bool disallow_code_downloads;
#if NET_2_0
		private ActivationArguments _activationArguments;
#endif

		public AppDomainSetup ()
		{
		}

		internal AppDomainSetup (AppDomainSetup setup)
		{
			application_base = setup.application_base;
			application_name = setup.application_name;
			cache_path = setup.cache_path;
			configuration_file = setup.configuration_file;
			dynamic_base = setup.dynamic_base;
			license_file = setup.license_file;
			private_bin_path = setup.private_bin_path;
			private_bin_path_probe = setup.private_bin_path_probe;
			shadow_copy_directories = setup.shadow_copy_directories;
			shadow_copy_files = setup.shadow_copy_files;
			publisher_policy = setup.publisher_policy;
			path_changed = setup.path_changed;
			loader_optimization = setup.loader_optimization;
			disallow_binding_redirects = setup.disallow_binding_redirects;
			disallow_code_downloads = setup.disallow_code_downloads;
		}

#if NET_2_0
		public AppDomainSetup (ActivationArguments activationArguments)
		{
			_activationArguments = activationArguments;
		}

		public AppDomainSetup (ActivationContext activationContext)
		{
			_activationArguments = new ActivationArguments (activationContext);
		}
#endif

		static string GetAppBase (string appBase)
		{
			if (appBase == null)
				return null;

			int len = appBase.Length;
			if (len >= 8 && appBase.ToLower ().StartsWith ("file://")) {
				appBase = appBase.Substring (7);
				if (Path.DirectorySeparatorChar != '/')
					appBase = appBase.Replace ('/', Path.DirectorySeparatorChar);
				if (Environment.IsRunningOnWindows) {
					// Under Windows prepend "//" to indicate it's a local file
					appBase = "//" + appBase;
				}
#if NET_2_0
			} else {
#else
			// under 1.x the ":" gets a special treatment - but it doesn't make sense outside Windows
			} else if (!Environment.IsRunningOnWindows || (appBase.IndexOf (':') == -1)) {
#endif
				appBase = Path.GetFullPath (appBase);
			}

			return appBase;
		}
		
		public string ApplicationBase {
			get { return GetAppBase (application_base); }
			set { application_base = value; } 
		}

		public string ApplicationName {
			get {
				return application_name;
			}
			set {
				application_name = value;
			}
		}

		public string CachePath {
			get {
				return cache_path;
			}
			set {
				cache_path = value;
			}
		}

		public string ConfigurationFile {
			get {
				return configuration_file;
			}
			set {
				configuration_file = value;
			}
		}

		public bool DisallowPublisherPolicy {
			get {
				return publisher_policy;
			}
			set {
				publisher_policy = value;
			}
		}

		public string DynamicBase {
			get {
				if (dynamic_base == null)
					return null;

				if (Path.IsPathRooted (dynamic_base))
					return dynamic_base;

				if (ApplicationBase == null)
					throw new MemberAccessException ("The ApplicationBase must be set before retrieving this property.");
				
				return Path.Combine (ApplicationBase, dynamic_base);
			}
			set {
				if (application_name == null)
					throw new MemberAccessException ("ApplicationName must be set before the DynamicBase can be set.");
				uint id = (uint) application_name.GetHashCode ();
				dynamic_base = Path.Combine (value, id.ToString("x"));
			}
		}

		public string LicenseFile {
			get {
				return license_file;
			}
			set {
				license_file = value;
			}
		}

		[MonoTODO ("--share-code")]
		public LoaderOptimization LoaderOptimization {
			get {
				return loader_optimization;
			}
			set {
				loader_optimization = value;
			}
		}

		public string PrivateBinPath {
			get {
				return private_bin_path;
			}
			set {
				private_bin_path = value;
				path_changed = true;
			}
		}

		public string PrivateBinPathProbe {
			get {
				return private_bin_path_probe;
			}
			set {
				private_bin_path_probe = value;
				path_changed = true;
			}
		}

		public string ShadowCopyDirectories {
			get {
				return shadow_copy_directories;
			}
			set {
				shadow_copy_directories = value;
			}
		}

		public string ShadowCopyFiles {
			get {
				return shadow_copy_files;
			}
			set {
				shadow_copy_files = value;
			}
		}

#if NET_1_1
		public bool DisallowBindingRedirects {
			get {
				return disallow_binding_redirects;
			}
			set {
				disallow_binding_redirects = value;
			}
		}

		public bool DisallowCodeDownload {
			get {
				return disallow_code_downloads;
			}
			set {
				disallow_code_downloads = value;
			}
		}
#endif

#if NET_2_0
		public ActivationArguments ActivationArguments {
			get { return _activationArguments; }
			set { _activationArguments = value; }
		}
#endif
	}
}

About Koders | Resources | Downloads | Support | Black Duck | Submit Project | Terms of Service | DMCA | Privacy Policy | Site Map| Contact Us