// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Runtime.Serialization.Formatters.Binary;
-#if NET_2_0 && !NET_2_1
using System.Runtime.Hosting;
using System.Security.Policy;
-#endif
namespace System
{
[Serializable]
[ClassInterface (ClassInterfaceType.None)]
-#if NET_2_0
[ComVisible (true)]
-#endif
+ [StructLayout (LayoutKind.Sequential)]
#if NET_2_1
public sealed class AppDomainSetup
#else
string shadow_copy_files;
bool publisher_policy;
private bool path_changed;
+#if MOBILE
+ private int loader_optimization;
+#else
private LoaderOptimization loader_optimization;
+#endif
bool disallow_binding_redirects;
bool disallow_code_downloads;
-#if NET_2_0 && !NET_2_1
+#if MOBILE
+ object _activationArguments;
+ object domain_initializer;
+ object application_trust;
+#else
private ActivationArguments _activationArguments;
AppDomainInitializer domain_initializer;
[NonSerialized]
ApplicationTrust application_trust;
- string [] domain_initializer_args;
-#else
- object _activationArguments;
- object domain_initializer; // always null
- [NonSerialized]
- object application_trust; // dummy, always null
- object domain_initializer_args;
#endif
+ string [] domain_initializer_args;
+
bool disallow_appbase_probe;
byte [] configuration_bytes;
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;
application_trust = setup.application_trust;
domain_initializer_args = setup.domain_initializer_args;
disallow_appbase_probe = setup.disallow_appbase_probe;
configuration_bytes = setup.configuration_bytes;
-//#endif
}
-#if NET_2_0 && !NET_2_1
public AppDomainSetup (ActivationArguments activationArguments)
{
_activationArguments = activationArguments;
{
_activationArguments = new ActivationArguments (activationContext);
}
-#endif
static string GetAppBase (string appBase)
{
// 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);
}
application_name = value;
}
}
-#if !NET_2_1
+
public string CachePath {
get {
return cache_path;
license_file = value;
}
}
-#endif
+
[MonoLimitation ("In Mono this is controlled by the --share-code flag")]
public LoaderOptimization LoaderOptimization {
get {
- return loader_optimization;
+ return (LoaderOptimization)loader_optimization;
}
set {
+#if MOBILE
+ loader_optimization = (int)value;
+#else
loader_optimization = value;
+#endif
}
}
-#if !NET_2_1
+
public string PrivateBinPath {
get {
return private_bin_path;
}
}
-#if NET_1_1
public bool DisallowBindingRedirects {
get {
return disallow_binding_redirects;
disallow_code_downloads = value;
}
}
-#endif
-#if NET_2_0
+ public string TargetFrameworkName { get; set; }
+
public ActivationArguments ActivationArguments {
get {
if (_activationArguments != null)
- return _activationArguments;
+ return (ActivationArguments)_activationArguments;
DeserializeNonPrimitives ();
- return _activationArguments;
+ return (ActivationArguments)_activationArguments;
}
set { _activationArguments = value; }
}
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
[MonoLimitation ("it needs to be invoked within the created domain")]
public AppDomainInitializer AppDomainInitializer {
get {
if (domain_initializer != null)
- return domain_initializer;
+ return (AppDomainInitializer)domain_initializer;
DeserializeNonPrimitives ();
- return domain_initializer;
+ return (AppDomainInitializer)domain_initializer;
}
set { domain_initializer = value; }
}
+#else
+ [Obsolete ("AppDomainSetup.AppDomainInitializer is not supported on this platform.", true)]
+ public AppDomainInitializer AppDomainInitializer {
+ get { throw new PlatformNotSupportedException ("AppDomainSetup.AppDomainInitializer is not supported on this platform."); }
+ set { throw new PlatformNotSupportedException ("AppDomainSetup.AppDomainInitializer is not supported on this platform."); }
+ }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
+
[MonoLimitation ("it needs to be used to invoke the initializer within the created domain")]
public string [] AppDomainInitializerArguments {
public ApplicationTrust ApplicationTrust {
get {
if (application_trust != null)
- return application_trust;
+ return (ApplicationTrust)application_trust;
DeserializeNonPrimitives ();
if (application_trust == null)
application_trust = new ApplicationTrust ();
- return application_trust;
+ return (ApplicationTrust)application_trust;
}
set { application_trust = value; }
}
{
configuration_bytes = value;
}
-#endif
private void DeserializeNonPrimitives ()
{
-#if NET_2_0
lock (this) {
if (serialized_non_primitives == null)
return;
object [] arr = (object []) bf.Deserialize (ms);
_activationArguments = (ActivationArguments) arr [0];
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
domain_initializer = (AppDomainInitializer) arr [1];
+#endif
application_trust = (ApplicationTrust) arr [2];
serialized_non_primitives = null;
}
-#endif
}
internal void SerializeNonPrimitives ()
{
-#if NET_2_0
object [] arr = new object [3];
arr [0] = _activationArguments;
bf.Serialize (ms, arr);
serialized_non_primitives = ms.ToArray ();
-#endif
}
-#endif // !NET_2_1
+
+ [MonoTODO ("not implemented, does not throw because it's used in testing moonlight")]
+ public void SetCompatibilitySwitches (IEnumerable<string> switches)
+ {
+ }
}
}