e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
146 lines
5.2 KiB
C#
146 lines
5.2 KiB
C#
// ==++==
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// ==--==
|
|
|
|
using System.Diagnostics.Contracts;
|
|
using System.Runtime.Versioning;
|
|
using System.Security.Policy;
|
|
|
|
namespace System.Runtime.Hosting {
|
|
[Serializable]
|
|
[System.Runtime.InteropServices.ComVisible(true)]
|
|
public sealed class ActivationArguments : EvidenceBase {
|
|
private ActivationArguments () {}
|
|
|
|
// This boolean is used to smuggle the information about whether
|
|
// AppDomainSetup was constructed from an ActivationContext.
|
|
private bool m_useFusionActivationContext = false;
|
|
internal bool UseFusionActivationContext {
|
|
get {
|
|
return m_useFusionActivationContext;
|
|
}
|
|
}
|
|
|
|
// This is used to indicate whether the instance is to be activated
|
|
// during the new domain's initialization. CreateInstanceHelper sets
|
|
// this flag to true; CreateDomainHelper never activates the application.
|
|
private bool m_activateInstance = false;
|
|
internal bool ActivateInstance {
|
|
get {
|
|
return m_activateInstance;
|
|
}
|
|
set {
|
|
m_activateInstance = value;
|
|
}
|
|
}
|
|
|
|
private string m_appFullName;
|
|
internal string ApplicationFullName {
|
|
get {
|
|
return m_appFullName;
|
|
}
|
|
}
|
|
|
|
private string[] m_appManifestPaths;
|
|
internal string[] ApplicationManifestPaths {
|
|
get {
|
|
return m_appManifestPaths;
|
|
}
|
|
}
|
|
|
|
#if !FEATURE_PAL
|
|
public ActivationArguments (ApplicationIdentity applicationIdentity) : this (applicationIdentity, null) {}
|
|
public ActivationArguments (ApplicationIdentity applicationIdentity, string[] activationData) {
|
|
if (applicationIdentity == null)
|
|
throw new ArgumentNullException("applicationIdentity");
|
|
Contract.EndContractBlock();
|
|
|
|
m_appFullName = applicationIdentity.FullName;
|
|
m_activationData = activationData;
|
|
}
|
|
|
|
public ActivationArguments (ActivationContext activationData) : this (activationData, null) {}
|
|
[ResourceExposure(ResourceScope.None)]
|
|
[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
|
|
public ActivationArguments (ActivationContext activationContext, string[] activationData) {
|
|
if (activationContext == null)
|
|
throw new ArgumentNullException("activationContext");
|
|
Contract.EndContractBlock();
|
|
|
|
m_appFullName = activationContext.Identity.FullName;
|
|
m_appManifestPaths = activationContext.ManifestPaths;
|
|
m_activationData = activationData;
|
|
m_useFusionActivationContext = true;
|
|
}
|
|
|
|
[ResourceExposure(ResourceScope.Machine)]
|
|
[ResourceConsumption(ResourceScope.Machine)]
|
|
internal ActivationArguments (string appFullName, string[] appManifestPaths, string[] activationData) {
|
|
if (appFullName == null)
|
|
throw new ArgumentNullException("appFullName");
|
|
Contract.EndContractBlock();
|
|
|
|
m_appFullName = appFullName;
|
|
m_appManifestPaths = appManifestPaths;
|
|
m_activationData = activationData;
|
|
m_useFusionActivationContext = true;
|
|
}
|
|
|
|
public ApplicationIdentity ApplicationIdentity {
|
|
get {
|
|
return new ApplicationIdentity(m_appFullName);
|
|
}
|
|
}
|
|
|
|
public ActivationContext ActivationContext {
|
|
[ResourceExposure(ResourceScope.None)]
|
|
[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
|
|
get {
|
|
if (!UseFusionActivationContext)
|
|
return null;
|
|
|
|
if (m_appManifestPaths == null)
|
|
return new ActivationContext(new ApplicationIdentity(m_appFullName));
|
|
else
|
|
return new ActivationContext(new ApplicationIdentity(m_appFullName), m_appManifestPaths);
|
|
}
|
|
}
|
|
#endif // !FEATURE_PAL
|
|
|
|
private string[] m_activationData;
|
|
public string[] ActivationData {
|
|
get {
|
|
return m_activationData;
|
|
}
|
|
}
|
|
|
|
public override EvidenceBase Clone() {
|
|
ActivationArguments clone = new ActivationArguments();
|
|
|
|
clone.m_useFusionActivationContext = m_useFusionActivationContext;
|
|
clone.m_activateInstance = m_activateInstance;
|
|
clone.m_appFullName = m_appFullName;
|
|
|
|
if (m_appManifestPaths != null) {
|
|
clone.m_appManifestPaths = new string[m_appManifestPaths.Length];
|
|
Array.Copy(m_appManifestPaths, clone.m_appManifestPaths, clone.m_appManifestPaths.Length);
|
|
}
|
|
|
|
if (m_activationData != null) {
|
|
clone.m_activationData = new string[m_activationData.Length];
|
|
Array.Copy(m_activationData, clone.m_activationData, clone.m_activationData.Length);
|
|
}
|
|
|
|
#if !FEATURE_PAL
|
|
clone.m_activateInstance = m_activateInstance;
|
|
clone.m_appFullName = m_appFullName;
|
|
clone.m_useFusionActivationContext = m_useFusionActivationContext;
|
|
#endif // !FEATURE_PAL
|
|
|
|
return clone;
|
|
}
|
|
}
|
|
}
|