Ejemplo n.º 1
0
        public static void RunInDomain(AppDomainInitializer run, 
            string basePath = null,
            string[] arguments = null,
            Action runInThisDomain = null)
        {
            AppDomain appDomain = null;

            try {
                appDomain = AppDomain.CreateDomain(
                    friendlyName: string.Empty,
                    securityInfo: null,
                    appBasePath: basePath,
                    appRelativeSearchPath: null,
                    shadowCopyFiles: false,
                    adInit: run,
                    adInitArgs: arguments
                );

                if (runInThisDomain != null)
                    runInThisDomain();

            } finally {
                AppDomain.Unload(appDomain);
            }
        }
Ejemplo n.º 2
0
        public static void RunInDomain(AppDomainInitializer run,
                                       string basePath        = null,
                                       string[] arguments     = null,
                                       Action runInThisDomain = null)
        {
            AppDomain appDomain = null;

            try {
                appDomain = AppDomain.CreateDomain(
                    friendlyName: string.Empty,
                    securityInfo: null,
                    appBasePath: basePath,
                    appRelativeSearchPath: null,
                    shadowCopyFiles: false,
                    adInit: run,
                    adInitArgs: arguments
                    );

                if (runInThisDomain != null)
                {
                    runInThisDomain();
                }
            } finally {
                AppDomain.Unload(appDomain);
            }
        }
Ejemplo n.º 3
0
        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
            _activationArguments    = setup._activationArguments;
            domain_initializer      = setup.domain_initializer;
            domain_initializer_args = setup.domain_initializer_args;
            application_trust_xml   = setup.application_trust_xml;
            disallow_appbase_probe  = setup.disallow_appbase_probe;
            configuration_bytes     = setup.configuration_bytes;
//#endif
        }
Ejemplo n.º 4
0
        public ExpressionOwner()
        {
            this.InstanceB         = new ArrayList();
            this.InstanceA         = this.InstanceB;
            this.NullField         = null;
            this.DecimalA          = 100;
            this.DecimalB          = 0.25m;
            this.KeyboardA         = new Keyboard();
            this.KeyboardA.StructA = new Mouse("mouse", 123);
            this.KeyboardA.ClassA  = new Monitor();
            this.EncodingA         = System.Text.Encoding.ASCII;
            this.DelegateA         = DoAction;
            this.ICloneableArray   = new string[0];
            this.ArrayA            = new string[0];
            this.DelegateANull     = null;
            this.IComparableNull   = null;
            this.IComparableString = "string";
            this.ExceptionA        = new ArgumentException();
            this.ExceptionNull     = null;
            this.ValueTypeStructA  = new TestStruct();
            this.ObjectStringA     = "string";
            this.ObjectIntA        = 100;
            this.IComparableA      = 100.25;
            this.StructA           = new TestStruct();
            this.VersionA          = new System.Version(1, 1, 1, 1);
            this.ICloneableA       = "abc";
            this.GuidA             = Guid.NewGuid();
            this.List = new ArrayList();
            this.List.Add("a");
            this.List.Add(100);
            this.StringDict = new System.Collections.Specialized.StringDictionary();
            this.StringDict.Add("key", "value");
            this.DoubleA     = 100.25;
            this.SingleA     = 100.25f;
            this.Int32A      = 100000;
            this.StringA     = "string";
            this.BoolA       = true;
            this.TypeA       = typeof(string);
            this.ByteA       = 50;
            this.ByteB       = 2;
            this.SByteA      = -10;
            this.Int16A      = -10;
            this.UInt16A     = 100;
            this.DateTimeA   = new DateTime(2007, 7, 1);
            this.GenericDict = new Dictionary <string, int>();
            this.GenericDict.Add("a", 100);
            this.GenericDict.Add("b", 100);

            this.Dict = new Hashtable();
            this.Dict.Add(100, null);
            this.Dict.Add("abc", null);

            DataTable dt = new DataTable();

            dt.Columns.Add("ColumnA", typeof(int));

            dt.Rows.Add(100);

            this.Row = dt.Rows[0];
        }
Ejemplo n.º 5
0
        internal AppDomainInitializer Unwrap()
        {
            if (Info == null)
            {
                return(null);
            }
            AppDomainInitializer retVal = null;

            for (int i = 0; i < Info.Length; i++)
            {
                Assembly             assembly = Assembly.Load(Info[i].TargetTypeAssembly);
                AppDomainInitializer newVal   = (AppDomainInitializer)Delegate.CreateDelegate(typeof(AppDomainInitializer),
                                                                                              assembly.GetType(Info[i].TargetTypeName),
                                                                                              Info[i].MethodName);
                if (retVal == null)
                {
                    retVal = newVal;
                }
                else
                {
                    retVal += newVal;
                }
            }
            return(retVal);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// appdomaininitializer.BeginInvoke(args, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this AppDomainInitializer appdomaininitializer, String[] args, AsyncCallback callback)
        {
            if (appdomaininitializer == null)
            {
                throw new ArgumentNullException("appdomaininitializer");
            }

            return(appdomaininitializer.BeginInvoke(args, callback, null));
        }
Ejemplo n.º 7
0
        public AppDomainEngineInvoker(string testSourcePath, AppDomainInitializer initializer = null, string appBasePath = null)
        {
            TestPlatformEventSource.Instance.TestHostAppDomainCreationStart();

            this.appDomain = CreateNewAppDomain(testSourcePath, initializer, appBasePath);

            // Setting appbase later, as AppDomain needs to load testhost.exe into the new Domain, to have access to AppDomainInitializer method.
            // If we set appbase to testsource folder, then if fails to find testhost.exe resulting in FileNotFoundException for testhost.exe
            this.UpdateAppBaseToTestSourceLocation(testSourcePath);
            this.actualInvoker = CreateInvokerInAppDomain(appDomain);

            TestPlatformEventSource.Instance.TestHostAppDomainCreationStop();
        }
Ejemplo n.º 8
0
        internal AppDomainInitializerInfo(AppDomainInitializer init)
        {
            Info = null;
            if (init == null)
            {
                return;
            }
            List <ItemInfo>             itemInfo        = new List <ItemInfo>();
            List <AppDomainInitializer> nestedDelegates = new List <AppDomainInitializer>();

            nestedDelegates.Add(init);
            int idx = 0;

            while (nestedDelegates.Count > idx)
            {
                AppDomainInitializer curr = nestedDelegates[idx++];
                Delegate[]           list = curr.GetInvocationList();
                for (int i = 0; i < list.Length; i++)
                {
                    if (!list[i].Method.IsStatic)
                    {
                        if (list[i].Target == null)
                        {
                            continue;
                        }

                        AppDomainInitializer nested = list[i].Target as AppDomainInitializer;
                        if (nested != null)
                        {
                            nestedDelegates.Add(nested);
                        }
                        else
                        {
                            throw new ArgumentException(SR.Arg_MustBeStatic,
                                                        list[i].Method.ReflectedType.FullName + "::" + list[i].Method.Name);
                        }
                    }
                    else
                    {
                        ItemInfo info = new ItemInfo();
                        info.TargetTypeAssembly = list[i].Method.ReflectedType.Module.Assembly.FullName;
                        info.TargetTypeName     = list[i].Method.ReflectedType.FullName;
                        info.MethodName         = list[i].Method.Name;
                        itemInfo.Add(info);
                    }
                }
            }

            Info = itemInfo.ToArray();
        }
        // Token: 0x06000783 RID: 1923 RVA: 0x00019FC8 File Offset: 0x000181C8
        internal AppDomainInitializerInfo(AppDomainInitializer init)
        {
            this.Info = null;
            if (init == null)
            {
                return;
            }
            List <AppDomainInitializerInfo.ItemInfo> list = new List <AppDomainInitializerInfo.ItemInfo>();
            List <AppDomainInitializer> list2             = new List <AppDomainInitializer>();

            list2.Add(init);
            int num = 0;

            while (list2.Count > num)
            {
                AppDomainInitializer appDomainInitializer = list2[num++];
                Delegate[]           invocationList       = appDomainInitializer.GetInvocationList();
                for (int i = 0; i < invocationList.Length; i++)
                {
                    if (!invocationList[i].Method.IsStatic)
                    {
                        if (invocationList[i].Target != null)
                        {
                            AppDomainInitializer appDomainInitializer2 = invocationList[i].Target as AppDomainInitializer;
                            if (appDomainInitializer2 == null)
                            {
                                throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"), invocationList[i].Method.ReflectedType.FullName + "::" + invocationList[i].Method.Name);
                            }
                            list2.Add(appDomainInitializer2);
                        }
                    }
                    else
                    {
                        list.Add(new AppDomainInitializerInfo.ItemInfo
                        {
                            TargetTypeAssembly = invocationList[i].Method.ReflectedType.Module.Assembly.FullName,
                            TargetTypeName     = invocationList[i].Method.ReflectedType.FullName,
                            MethodName         = invocationList[i].Method.Name
                        });
                    }
                }
            }
            this.Info = list.ToArray();
        }
Ejemplo n.º 10
0
        internal AppDomainSetup(AppDomainSetup copy, bool copyDomainBoundData)
        {
            string[] mine = Value;
            if (copy != null)
            {
                string[] other     = copy.Value;
                int      mineSize  = _Entries.Length;
                int      otherSize = other.Length;
                int      size      = (otherSize < mineSize) ? otherSize : mineSize;

                for (int i = 0; i < size; i++)
                {
                    mine[i] = other[i];
                }

                if (size < mineSize)
                {
                    for (int i = size; i < mineSize; i++)
                    {
                        mine[i] = null;
                    }
                }

                _LoaderOptimization = copy._LoaderOptimization;

                _AppDomainInitializerArguments = copy.AppDomainInitializerArguments;
                _ActivationArguments           = copy.ActivationArguments;
                if (copyDomainBoundData)
                {
                    _AppDomainInitializer = copy.AppDomainInitializer;
                }
                else
                {
                    _AppDomainInitializer = null;
                }

                _ConfigurationBytes = copy.GetConfigurationBytes();
            }
            else
            {
                _LoaderOptimization = LoaderOptimization.NotSpecified;
            }
        }
Ejemplo n.º 11
0
        internal AppDomainInitializerInfo(AppDomainInitializer init)
        {
            this.Info = (AppDomainInitializerInfo.ItemInfo[])null;
            if (init == null)
            {
                return;
            }
            List <AppDomainInitializerInfo.ItemInfo> itemInfoList = new List <AppDomainInitializerInfo.ItemInfo>();
            List <AppDomainInitializer> domainInitializerList     = new List <AppDomainInitializer>();

            domainInitializerList.Add(init);
            int num = 0;

            while (domainInitializerList.Count > num)
            {
                Delegate[] invocationList = domainInitializerList[num++].GetInvocationList();
                for (int index = 0; index < invocationList.Length; ++index)
                {
                    if (!invocationList[index].Method.IsStatic)
                    {
                        if (invocationList[index].Target != null)
                        {
                            AppDomainInitializer domainInitializer = invocationList[index].Target as AppDomainInitializer;
                            if (domainInitializer == null)
                            {
                                throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"), invocationList[index].Method.ReflectedType.FullName + "::" + invocationList[index].Method.Name);
                            }
                            domainInitializerList.Add(domainInitializer);
                        }
                    }
                    else
                    {
                        itemInfoList.Add(new AppDomainInitializerInfo.ItemInfo()
                        {
                            TargetTypeAssembly = invocationList[index].Method.ReflectedType.Module.Assembly.FullName,
                            TargetTypeName     = invocationList[index].Method.ReflectedType.FullName,
                            MethodName         = invocationList[index].Method.Name
                        });
                    }
                }
            }
            this.Info = itemInfoList.ToArray();
        }
		internal AppDomainInitializerInfo(AppDomainInitializer init)
		{
			this.Info = null;
			if (init == null)
			{
				return;
			}
			List<AppDomainInitializerInfo.ItemInfo> list = new List<AppDomainInitializerInfo.ItemInfo>();
			List<AppDomainInitializer> list2 = new List<AppDomainInitializer>();
			list2.Add(init);
			int num = 0;
			while (list2.Count > num)
			{
				AppDomainInitializer appDomainInitializer = list2[num++];
				Delegate[] invocationList = appDomainInitializer.GetInvocationList();
				for (int i = 0; i < invocationList.Length; i++)
				{
					if (!invocationList[i].Method.IsStatic)
					{
						if (invocationList[i].Target != null)
						{
							AppDomainInitializer appDomainInitializer2 = invocationList[i].Target as AppDomainInitializer;
							if (appDomainInitializer2 == null)
							{
								throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"), invocationList[i].Method.ReflectedType.FullName + "::" + invocationList[i].Method.Name);
							}
							list2.Add(appDomainInitializer2);
						}
					}
					else
					{
						list.Add(new AppDomainInitializerInfo.ItemInfo
						{
							TargetTypeAssembly = invocationList[i].Method.ReflectedType.Module.Assembly.FullName, 
							TargetTypeName = invocationList[i].Method.ReflectedType.FullName, 
							MethodName = invocationList[i].Method.Name
						});
					}
				}
			}
			this.Info = list.ToArray();
		}
Ejemplo n.º 13
0
        private void DeserializeNonPrimitives()
        {
            lock (this) {
                if (serialized_non_primitives == null)
                {
                    return;
                }

                BinaryFormatter bf = new BinaryFormatter();
                MemoryStream    ms = new MemoryStream(serialized_non_primitives);

                object [] arr = (object [])bf.Deserialize(ms);

                _activationArguments = (ActivationArguments)arr [0];
                domain_initializer   = (AppDomainInitializer)arr [1];
                application_trust    = (ApplicationTrust)arr [2];

                serialized_non_primitives = null;
            }
        }
Ejemplo n.º 14
0
 internal AppDomainInitializerInfo(AppDomainInitializer init)
 {
     if (init != null)
     {
         ArrayList list = new ArrayList();
         ArrayList list2 = new ArrayList();
         list2.Add(init);
         int num = 0;
         while (list2.Count > num)
         {
             Delegate[] invocationList = ((AppDomainInitializer) list2[num++]).GetInvocationList();
             for (int i = 0; i < invocationList.Length; i++)
             {
                 if (!invocationList[i].Method.IsStatic)
                 {
                     if (invocationList[i].Target != null)
                     {
                         AppDomainInitializer target = invocationList[i].Target as AppDomainInitializer;
                         if (target == null)
                         {
                             throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"), invocationList[i].Method.ReflectedType.FullName + "::" + invocationList[i].Method.Name);
                         }
                         list2.Add(target);
                     }
                 }
                 else
                 {
                     ItemInfo info = new ItemInfo {
                         TargetTypeAssembly = invocationList[i].Method.ReflectedType.Module.Assembly.FullName,
                         TargetTypeName = invocationList[i].Method.ReflectedType.FullName,
                         MethodName = invocationList[i].Method.Name
                     };
                     list.Add(info);
                 }
             }
         }
         this.Info = (ItemInfo[]) list.ToArray(typeof(ItemInfo));
     }
 }
Ejemplo n.º 15
0
 internal AppDomainInitializerInfo(AppDomainInitializer init)
 {
     if (init != null)
     {
         ArrayList list  = new ArrayList();
         ArrayList list2 = new ArrayList();
         list2.Add(init);
         int num = 0;
         while (list2.Count > num)
         {
             Delegate[] invocationList = ((AppDomainInitializer)list2[num++]).GetInvocationList();
             for (int i = 0; i < invocationList.Length; i++)
             {
                 if (!invocationList[i].Method.IsStatic)
                 {
                     if (invocationList[i].Target != null)
                     {
                         AppDomainInitializer target = invocationList[i].Target as AppDomainInitializer;
                         if (target == null)
                         {
                             throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"), invocationList[i].Method.ReflectedType.FullName + "::" + invocationList[i].Method.Name);
                         }
                         list2.Add(target);
                     }
                 }
                 else
                 {
                     ItemInfo info = new ItemInfo {
                         TargetTypeAssembly = invocationList[i].Method.ReflectedType.Module.Assembly.FullName,
                         TargetTypeName     = invocationList[i].Method.ReflectedType.FullName,
                         MethodName         = invocationList[i].Method.Name
                     };
                     list.Add(info);
                 }
             }
         }
         this.Info = (ItemInfo[])list.ToArray(typeof(ItemInfo));
     }
 }
Ejemplo n.º 16
0
        private AppDomain CreateNewAppDomain(string testSourcePath, AppDomainInitializer initializer, string appBasePath)
        {
            var appDomainSetup   = new AppDomainSetup();
            var testSourceFolder = Path.GetDirectoryName(testSourcePath);

            if (!string.IsNullOrEmpty(appBasePath))
            {
                appDomainSetup.ApplicationBase = appBasePath;
            }

            appDomainSetup.LoaderOptimization = LoaderOptimization.MultiDomainHost;

            //Setup AppDomainInitialzier to set user defined Culture
            appDomainSetup.AppDomainInitializer          = initializer ?? SetAppDomainCulture;
            appDomainSetup.AppDomainInitializerArguments = new string[] { };

            // Set User Config file as app domain config
            SetConfigurationFile(appDomainSetup, testSourcePath, testSourceFolder);

            // Create new AppDomain
            return(AppDomain.CreateDomain("TestHostAppDomain", null, appDomainSetup));
        }
Ejemplo n.º 17
0
        internal AppDomainInitializer Unwrap()
        {
            if (this.Info == null)
            {
                return((AppDomainInitializer)null);
            }
            AppDomainInitializer domainInitializer1 = (AppDomainInitializer)null;

            new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Assert();
            for (int index = 0; index < this.Info.Length; ++index)
            {
                AppDomainInitializer domainInitializer2 = (AppDomainInitializer)Delegate.CreateDelegate(typeof(AppDomainInitializer), Assembly.Load(this.Info[index].TargetTypeAssembly).GetType(this.Info[index].TargetTypeName), this.Info[index].MethodName);
                if (domainInitializer1 == null)
                {
                    domainInitializer1 = domainInitializer2;
                }
                else
                {
                    domainInitializer1 += domainInitializer2;
                }
            }
            return(domainInitializer1);
        }
Ejemplo n.º 18
0
    public static void Main()
    {
        // Get a reference to the default application domain.
        //
        AppDomain current = AppDomain.CurrentDomain;

        // Create the AppDomainSetup that will be used to set up the child
        // AppDomain.
        AppDomainSetup ads = new AppDomainSetup();

        // Use the evidence from the default application domain to
        // create evidence for the child application domain.
        //
        Evidence ev = new Evidence(current.Evidence);

        // Create an AppDomainInitializer delegate that represents the
        // callback method, AppDomainInit. Assign this delegate to the
        // AppDomainInitializer property of the AppDomainSetup object.
        //
        AppDomainInitializer adi = new AppDomainInitializer(AppDomainInit);

        ads.AppDomainInitializer = adi;

        // Create an array of strings to pass as arguments to the callback
        // method. Assign the array to the AppDomainInitializerArguments
        // property.
        string[] initArgs = { "String1", "String2" };
        ads.AppDomainInitializerArguments = initArgs;

        // Create a child application domain named "ChildDomain", using
        // the evidence and the AppDomainSetup object.
        //
        AppDomain ad = AppDomain.CreateDomain("ChildDomain", ev, ads);

        Console.WriteLine("Press the Enter key to exit the example program.");
        Console.ReadLine();
    }
Ejemplo n.º 19
0
 internal AppDomainSetup(AppDomainSetup setup)
 {
     this.application_base           = setup.application_base;
     this.application_name           = setup.application_name;
     this.cache_path                 = setup.cache_path;
     this.configuration_file         = setup.configuration_file;
     this.dynamic_base               = setup.dynamic_base;
     this.license_file               = setup.license_file;
     this.private_bin_path           = setup.private_bin_path;
     this.private_bin_path_probe     = setup.private_bin_path_probe;
     this.shadow_copy_directories    = setup.shadow_copy_directories;
     this.shadow_copy_files          = setup.shadow_copy_files;
     this.publisher_policy           = setup.publisher_policy;
     this.path_changed               = setup.path_changed;
     this.loader_optimization        = setup.loader_optimization;
     this.disallow_binding_redirects = setup.disallow_binding_redirects;
     this.disallow_code_downloads    = setup.disallow_code_downloads;
     this._activationArguments       = setup._activationArguments;
     this.domain_initializer         = setup.domain_initializer;
     this.domain_initializer_args    = setup.domain_initializer_args;
     this.application_trust_xml      = setup.application_trust_xml;
     this.disallow_appbase_probe     = setup.disallow_appbase_probe;
     this.configuration_bytes        = setup.configuration_bytes;
 }
Ejemplo n.º 20
0
        internal AppDomainInitializer Unwrap()
        {
            if (this.Info == null)
            {
                return(null);
            }
            AppDomainInitializer a = null;

            new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Assert();
            for (int i = 0; i < this.Info.Length; i++)
            {
                Assembly             assembly = Assembly.Load(this.Info[i].TargetTypeAssembly);
                AppDomainInitializer b        = (AppDomainInitializer)Delegate.CreateDelegate(typeof(AppDomainInitializer), assembly.GetType(this.Info[i].TargetTypeName), this.Info[i].MethodName);
                if (a == null)
                {
                    a = b;
                }
                else
                {
                    a = (AppDomainInitializer)Delegate.Combine(a, b);
                }
            }
            return(a);
        }
Ejemplo n.º 21
0
 public static AppDomain CreateDomain(string friendlyName, System.Security.Policy.Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
     return(default(AppDomain));
 }
Ejemplo n.º 22
0
        public static object GetProxy(String domainName, String assemblyName, String typeName, AppDomainInitializer initializer = null, string[] initializerArguments = null)
        {
            AppDomain domain;

            if (!m_domains.TryGetValue(domainName, out domain))
            {
                AppDomainSetup setup = new AppDomainSetup();
                setup.ApplicationBase               = AppDomain.CurrentDomain.BaseDirectory;
                setup.PrivateBinPath                = "bin";
                setup.ConfigurationFile             = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
                setup.AppDomainInitializer          = initializer;
                setup.AppDomainInitializerArguments = initializerArguments;
                Evidence evidence = AppDomain.CurrentDomain.Evidence;

                domain = AppDomain.CreateDomain(domainName, evidence, setup);

                m_domains.Add(domainName, domain);
            }

            return(domain.CreateInstanceAndUnwrap(assemblyName, typeName));
        }
		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;
			_activationArguments = setup._activationArguments;
			domain_initializer = setup.domain_initializer;
			application_trust = setup.application_trust;
			domain_initializer_args = setup.domain_initializer_args;
			disallow_appbase_probe = setup.disallow_appbase_probe;
			configuration_bytes = setup.configuration_bytes;
		}
		private void DeserializeNonPrimitives ()
		{
			lock (this) {
				if (serialized_non_primitives == null)
					return;

				BinaryFormatter bf = new BinaryFormatter ();
				MemoryStream ms = new MemoryStream (serialized_non_primitives);

				object [] arr = (object []) bf.Deserialize (ms);

				_activationArguments = (ActivationArguments) arr [0];
				domain_initializer = (AppDomainInitializer) arr [1];
				application_trust = (ApplicationTrust) arr [2];

				serialized_non_primitives = null;
			}
		}
Ejemplo n.º 25
0
 public static AppDomain CreateDomain(string friendlyName, System.Security.Policy.Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
     AppDomainSetup info = new AppDomainSetup {
         ApplicationBase = appBasePath,
         PrivateBinPath = appRelativeSearchPath,
         AppDomainInitializer = adInit,
         AppDomainInitializerArguments = adInitArgs
     };
     if (shadowCopyFiles)
     {
         info.ShadowCopyFiles = "true";
     }
     return CreateDomain(friendlyName, securityInfo, info);
 }
Ejemplo n.º 26
0
		public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, string appBasePath,
			string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
		{
			throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
		}
Ejemplo n.º 27
0
 /// <inheritdoc />
 public IAppDomain CreateDomain(string friendlyName, Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
     return(new AppDomainWrap(AppDomain.CreateDomain(friendlyName, securityInfo, appBasePath, appRelativeSearchPath, shadowCopyFiles, adInit, adInitArgs)));
 }
Ejemplo n.º 28
0
 public static AppDomain CreateDomain(string friendlyName, System.Security.Policy.Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
   return default(AppDomain);
 }
Ejemplo n.º 29
0
		public static AppDomain CreateDomain(string friendlyName, Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
		{
			AppDomainSetup appDomainSetup = new AppDomainSetup();
			appDomainSetup.ApplicationBase = appBasePath;
			appDomainSetup.PrivateBinPath = appRelativeSearchPath;
			appDomainSetup.AppDomainInitializer = adInit;
			appDomainSetup.AppDomainInitializerArguments = adInitArgs;
			if (shadowCopyFiles)
			{
				appDomainSetup.ShadowCopyFiles = "true";
			}
			return AppDomain.CreateDomain(friendlyName, securityInfo, appDomainSetup);
		}
Ejemplo n.º 30
0
		public ExpressionOwner()
		{
			this.InstanceB = new ArrayList();
			this.InstanceA = this.InstanceB;
			this.NullField = null;
			this.DecimalA = 100;
			this.DecimalB = 0.25M;
			this.KeyboardA = new Keyboard();
			this.KeyboardA.StructA = new Mouse("mouse", 123);
			this.KeyboardA.ClassA = new Monitor();
			this.EncodingA = System.Text.Encoding.ASCII;
			this.DelegateA = DoAction;
			this.ICloneableArray = new string[] {};
			this.ArrayA = new string[] {};
			this.DelegateANull = null;
			this.IComparableNull = null;
			this.IComparableString = "string";
			this.ExceptionA = new ArgumentException();
			this.ExceptionNull = null;
			this.ValueTypeStructA = new TestStruct();
			this.ObjectStringA = "string";
			this.ObjectIntA = 100;
			this.IComparableA = 100.25;
			this.StructA = new TestStruct();
			this.VersionA = new System.Version(1, 1, 1, 1);
			this.ICloneableA = "abc";
			this.GuidA = Guid.NewGuid();
			this.List = new ArrayList();
			this.List.Add("a");
			this.List.Add(100);
			this.StringDict = new System.Collections.Specialized.StringDictionary();
			this.StringDict.Add("key", "value");
			this.DoubleA = 100.25;
			this.SingleA = 100.25f;
			this.Int32A = 100000;
			this.StringA = "string";
			this.BoolA = true;
			this.TypeA = typeof(string);
			this.ByteA = 50;
			this.ByteB = 2;
			this.SByteA = -10;
			this.Int16A = -10;
			this.UInt16A = 100;
			this.DateTimeA = new DateTime(2007, 7, 1);
			this.GenericDict = new Dictionary<string, int>();
			this.GenericDict.Add("a", 100);
			this.GenericDict.Add("b", 100);

			this.Dict = new Hashtable();
			this.Dict.Add(100, null);
			this.Dict.Add("abc", null);

			DataTable dt = new DataTable();
			dt.Columns.Add("ColumnA", typeof(int));

			dt.Rows.Add(100);

			this.Row = dt.Rows[0];
		}
Ejemplo n.º 31
0
 //
 // 摘要:
 //     使用证据、应用程序基路径、相对搜索路径和指定是否向应用程序域中加载程序集的影像副本的形参创建具有给定名称的新应用程序域。指定在初始化应用程序域时调用的回调方法,以及传递回调方法的字符串实参数组。
 //
 // 参数:
 //   friendlyName:
 //     域的友好名称。此友好名称可在用户界面中显示以标识域。有关更多信息,请参见System.AppDomain.FriendlyName。
 //
 //   securityInfo:
 //     确定代码标识的证据,该代码在应用程序域中运行。传递 null 以使用当前应用程序域的证据。
 //
 //   appBasePath:
 //     基目录,由程序集冲突解决程序用来探测程序集。有关更多信息,请参见System.AppDomain.BaseDirectory。
 //
 //   appRelativeSearchPath:
 //     相对于基目录的路径,在此程序集冲突解决程序应探测专用程序集。有关更多信息,请参见System.AppDomain.RelativeSearchPath。
 //
 //   shadowCopyFiles:
 //     如果为 true,则将程序集的影像副本加载到应用程序域中。有关更多信息,请参见 System.AppDomain.ShadowCopyFiles
 //     和Shadow Copying Assemblies。
 //
 //   adInit:
 //     System.AppDomainInitializer 委托,表示初始化新的 System.AppDomain 对象时调用的回调方法。
 //
 //   adInitArgs:
 //     字符串实参数组,在初始化新的 System.AppDomain 对象时传递给由 adInit 表示的回调。
 //
 // 返回结果:
 //     新创建的应用程序域。
 //
 // 异常:
 //   System.ArgumentNullException:
 //     friendlyName 为 null。
 public static AppDomain CreateDomain(string friendlyName, Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
     return null;
 }
Ejemplo n.º 32
0
 public ExpressionOwner()
 {
     this.IntArr = new int[]
     {
         100,
         200,
         300
     };
     this.StringArr = new string[]
     {
         "a",
         "b",
         "c"
     };
     this.DoubleArr = new double[]
     {
         1.1,
         2.2,
         3.3
     };
     this.BoolArr = new bool[]
     {
         true,
         default(bool),
         true
     };
     this.CharArr = new char[]
     {
         '.'
     };
     this.DateTimeArr = new DateTime[]
     {
         new DateTime(2007, 7, 1)
     };
     this.AsciiEncodingArr  = new ASCIIEncoding[0];
     this.InstanceB         = new ArrayList();
     this.InstanceA         = this.InstanceB;
     this.NullField         = null;
     this.DecimalA          = new decimal(100L);
     this.DecimalB          = 0.25m;
     this.KeyboardA         = default(Keyboard);
     this.KeyboardA.StructA = new Mouse("mouse", 123);
     this.KeyboardA.ClassA  = new Monitor();
     this.EncodingA         = Encoding.ASCII;
     this.DelegateA         = new AppDomainInitializer(this.DoAction);
     this.ICloneableArray   = new string[0];
     this.ArrayA            = new string[0];
     this.DelegateANull     = null;
     this.IComparableNull   = null;
     this.IComparableString = "string";
     this.ExceptionA        = new ArgumentException();
     this.ExceptionNull     = null;
     this.ValueTypeStructA  = default(TestStruct);
     this.ObjectStringA     = "string";
     this.ObjectIntA        = 100;
     this.IComparableA      = (IComparable)100.25;
     this.StructA           = default(TestStruct);
     this.VersionA          = new Version(1, 1, 1, 1);
     this.ICloneableA       = "abc";
     this.GuidA             = Guid.NewGuid();
     this.List = new ArrayList();
     this.List.Add("a");
     this.List.Add(100);
     this.StringDict = new StringDictionary();
     this.StringDict.Add("key", "value");
     this.DoubleA     = 100.25;
     this.SingleA     = 100.25f;
     this.Int32A      = 100000;
     this.StringA     = "string";
     this.BoolA       = true;
     this.TypeA       = typeof(string);
     this.ByteA       = 50;
     this.ByteB       = 2;
     this.SByteA      = -10;
     this.Int16A      = -10;
     this.UInt16A     = 100;
     this.DateTimeA   = new DateTime(2007, 7, 1);
     this.GenericDict = new Dictionary <string, int>();
     this.GenericDict.Add("a", 100);
     this.GenericDict.Add("b", 100);
     this.Dict = new Hashtable();
     this.Dict.Add(100, null);
     this.Dict.Add("abc", null);
     this.Row = new DataTable
     {
         Columns =
         {
             {
                 "ColumnA",
                 typeof(int)
             }
         },
         Rows =
         {
             new object[]
             {
                 100
             }
         }
     }.Rows[0];
 }
Ejemplo n.º 33
0
        internal AppDomainSetup(AppDomainSetup copy, bool copyDomainBoundData)
        {
            string[] mine = Value;
            if(copy != null) {
                string[] other = copy.Value;
                int mineSize = _Entries.Length;
                int otherSize = other.Length;
                int size = (otherSize < mineSize) ? otherSize : mineSize;

                for (int i = 0; i < size; i++)
                    mine[i] = other[i];

                if (size < mineSize)
                {
                    // This case can happen when the copy is a deserialized version of
                    // an AppDomainSetup object serialized by Everett.
                    for (int i = size; i < mineSize; i++)
                        mine[i] = null;
                }

                _LoaderOptimization = copy._LoaderOptimization;

                _AppDomainInitializerArguments = copy.AppDomainInitializerArguments;
#if FEATURE_CLICKONCE
                _ActivationArguments = copy.ActivationArguments;
#endif
                _ApplicationTrust = copy._ApplicationTrust;
                if (copyDomainBoundData)
                    _AppDomainInitializer = copy.AppDomainInitializer;
                else
                    _AppDomainInitializer = null;

                _ConfigurationBytes = copy.GetConfigurationBytes();
#if FEATURE_COMINTEROP
                _DisableInterfaceCache = copy._DisableInterfaceCache;
#endif // FEATURE_COMINTEROP
                _AppDomainManagerAssembly = copy.AppDomainManagerAssembly;
                _AppDomainManagerType = copy.AppDomainManagerType;
#if FEATURE_APTCA
                _AptcaVisibleAssemblies = copy.PartialTrustVisibleAssemblies;
#endif

                if (copy._CompatFlags != null)
                {
                    SetCompatibilitySwitches(copy._CompatFlags.Keys);
                }

#if !FEATURE_CORECLR
                if(copy._AppDomainSortingSetupInfo != null)
                {
                    _AppDomainSortingSetupInfo = new AppDomainSortingSetupInfo(copy._AppDomainSortingSetupInfo);
                }
#endif
                _TargetFrameworkName = copy._TargetFrameworkName;

#if FEATURE_RANDOMIZED_STRING_HASHING
                _UseRandomizedStringHashing = copy._UseRandomizedStringHashing;
#endif

            }
            else 
                _LoaderOptimization = LoaderOptimization.NotSpecified;
        }
Ejemplo n.º 34
0
			public Initializer (AppDomainInitializer initializer, string [] arguments)
			{
				this.initializer = initializer;
				this.arguments = arguments;
			}
Ejemplo n.º 35
0
 /// <inheritdoc />
 public IAppDomain CreateDomain(string friendlyName, Evidence securityInfo, string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
 {
     return new AppDomainWrap(AppDomain.CreateDomain(friendlyName, securityInfo, appBasePath, appRelativeSearchPath, shadowCopyFiles, adInit, adInitArgs));
 }
Ejemplo n.º 36
0
		// static methods

		public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, string appBasePath,
			string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
		{
			AppDomainSetup info = CreateDomainSetup (appBasePath, appRelativeSearchPath, shadowCopyFiles);

			info.AppDomainInitializerArguments = adInitArgs;
			info.AppDomainInitializer = adInit;

			return CreateDomain (friendlyName, securityInfo, info);
		}
        internal AppDomainSetup(AppDomainSetup copy, bool copyDomainBoundData)
        {
            string[] mine = Value;
            if(copy != null) {
                string[] other = copy.Value;
                int mineSize = _Entries.Length;
                int otherSize = other.Length;
                int size = (otherSize < mineSize) ? otherSize : mineSize;

                for (int i = 0; i < size; i++)
                    mine[i] = other[i];

                if (size < mineSize)
                {
                    for (int i = size; i < mineSize; i++)
                        mine[i] = null;
                }

                _LoaderOptimization = copy._LoaderOptimization;

                _AppDomainInitializerArguments = copy.AppDomainInitializerArguments;
                _ActivationArguments = copy.ActivationArguments;
                if (copyDomainBoundData)
                    _AppDomainInitializer = copy.AppDomainInitializer;
                else
                    _AppDomainInitializer = null;

                _ConfigurationBytes = copy.GetConfigurationBytes();
            }
            else 
                _LoaderOptimization = LoaderOptimization.NotSpecified;
        }
Ejemplo n.º 38
0
        internal AppDomainSetup(AppDomainSetup copy, bool copyDomainBoundData)
        {
            string[] mine = Value;
            if (copy != null)
            {
                string[] other     = copy.Value;
                int      mineSize  = _Entries.Length;
                int      otherSize = other.Length;
                int      size      = (otherSize < mineSize) ? otherSize : mineSize;

                for (int i = 0; i < size; i++)
                {
                    mine[i] = other[i];
                }

                if (size < mineSize)
                {
                    // This case can happen when the copy is a deserialized version of
                    // an AppDomainSetup object serialized by Everett.
                    for (int i = size; i < mineSize; i++)
                    {
                        mine[i] = null;
                    }
                }

                _LoaderOptimization = copy._LoaderOptimization;

                _AppDomainInitializerArguments = copy.AppDomainInitializerArguments;
                _ApplicationTrust = copy._ApplicationTrust;

                if (copyDomainBoundData)
                {
                    _AppDomainInitializer = copy.AppDomainInitializer;
                }
                else
                {
                    _AppDomainInitializer = null;
                }

                _ConfigurationBytes = copy.GetConfigurationBytes();
#if FEATURE_COMINTEROP
                _DisableInterfaceCache = copy._DisableInterfaceCache;
#endif // FEATURE_COMINTEROP
                _AppDomainManagerAssembly = copy.AppDomainManagerAssembly;
                _AppDomainManagerType     = copy.AppDomainManagerType;

                if (copy._CompatFlags != null)
                {
                    SetCompatibilitySwitches(copy._CompatFlags.Keys);
                }

                _TargetFrameworkName = copy._TargetFrameworkName;

#if FEATURE_RANDOMIZED_STRING_HASHING
                _UseRandomizedStringHashing = copy._UseRandomizedStringHashing;
#endif
            }
            else
            {
                _LoaderOptimization = LoaderOptimization.NotSpecified;
            }
        }
Ejemplo n.º 39
0
        internal AppDomainInitializerInfo(AppDomainInitializer init)
        {
            Info=null;
            if (init==null)
                return;
            List<ItemInfo> itemInfo = new List<ItemInfo>();
            List<AppDomainInitializer> nestedDelegates = new List<AppDomainInitializer>();
            nestedDelegates.Add(init);
            int idx=0;
 
            while (nestedDelegates.Count>idx)
            {
                AppDomainInitializer curr = nestedDelegates[idx++];
                Delegate[] list= curr.GetInvocationList();
                for (int i=0;i<list.Length;i++)
                {
                    if (!list[i].Method.IsStatic) 
                    {
                        if(list[i].Target==null)
                            continue;
                    
                        AppDomainInitializer nested = list[i].Target as AppDomainInitializer;
                        if (nested!=null)
                            nestedDelegates.Add(nested);
                        else
                            throw new ArgumentException(Environment.GetResourceString("Arg_MustBeStatic"),
                               list[i].Method.ReflectedType.FullName+"::"+list[i].Method.Name);
                    }
                    else
                    {
                        ItemInfo info=new ItemInfo();
                        info.TargetTypeAssembly=list[i].Method.ReflectedType.Module.Assembly.FullName;
                        info.TargetTypeName=list[i].Method.ReflectedType.FullName;
                        info.MethodName=list[i].Method.Name;
                        itemInfo.Add(info);
                    }
                    
                }
            }

            Info = itemInfo.ToArray();            
        }
Ejemplo n.º 40
0
        public static AppDomain CreateDomain(String friendlyName,
                                             Evidence securityInfo, // Optional
                                             String appBasePath,
                                             String appRelativeSearchPath,
                                             bool shadowCopyFiles,
                                             AppDomainInitializer adInit, 
                                             string[] adInitArgs) 
        {
            AppDomainSetup info = new AppDomainSetup();
            info.ApplicationBase = appBasePath;
            info.PrivateBinPath = appRelativeSearchPath;
            info.AppDomainInitializer=adInit;
            info.AppDomainInitializerArguments=adInitArgs;
            if(shadowCopyFiles)
                info.ShadowCopyFiles = "true";

            return CreateDomain(friendlyName,
                                securityInfo,
                                info);
        }
		internal AppDomainSetup(AppDomainSetup copy, bool copyDomainBoundData)
		{
			string[] value = this.Value;
			if (copy != null)
			{
				string[] value2 = copy.Value;
				int num = this._Entries.Length;
				int num2 = value2.Length;
				int num3 = (num2 < num) ? num2 : num;
				for (int i = 0; i < num3; i++)
				{
					value[i] = value2[i];
				}
				if (num3 < num)
				{
					for (int j = num3; j < num; j++)
					{
						value[j] = null;
					}
				}
				this._LoaderOptimization = copy._LoaderOptimization;
				this._AppDomainInitializerArguments = copy.AppDomainInitializerArguments;
				this._ActivationArguments = copy.ActivationArguments;
				this._ApplicationTrust = copy._ApplicationTrust;
				if (copyDomainBoundData)
				{
					this._AppDomainInitializer = copy.AppDomainInitializer;
				}
				else
				{
					this._AppDomainInitializer = null;
				}
				this._ConfigurationBytes = copy.GetConfigurationBytes();
				this._DisableInterfaceCache = copy._DisableInterfaceCache;
				this._AppDomainManagerAssembly = copy.AppDomainManagerAssembly;
				this._AppDomainManagerType = copy.AppDomainManagerType;
				this._AptcaVisibleAssemblies = copy.PartialTrustVisibleAssemblies;
				if (copy._CompatFlags != null)
				{
					this._CompatFlags = new Dictionary<string, object>(copy._CompatFlags);
					return;
				}
			}
			else
			{
				this._LoaderOptimization = LoaderOptimization.NotSpecified;
			}
		}