private void AddAssemblyEvidence(EvidenceBase evidence, Type evidenceType, DuplicateEvidenceAction duplicateAction)
 {
     using (new EvidenceLockHolder(this, EvidenceLockHolder.LockType.Writer))
     {
         this.AddAssemblyEvidenceNoLock(evidence, evidenceType, duplicateAction);
     }
 }
 private void AddHostEvidence(EvidenceBase evidence, Type evidenceType, DuplicateEvidenceAction duplicateAction)
 {
     if (this.Locked)
     {
         new SecurityPermission(SecurityPermissionFlag.ControlEvidence).Demand();
     }
     using (new EvidenceLockHolder(this, EvidenceLockHolder.LockType.Writer))
     {
         this.AddHostEvidenceNoLock(evidence, evidenceType, duplicateAction);
     }
 }
        private void AddHostEvidenceNoLock(EvidenceBase evidence, Type evidenceType, DuplicateEvidenceAction duplicateAction)
        {
            EvidenceTypeDescriptor evidenceTypeDescriptor = this.GetEvidenceTypeDescriptor(evidenceType, true);

            this.m_version++;
            if (evidenceTypeDescriptor.HostEvidence == null)
            {
                evidenceTypeDescriptor.HostEvidence = evidence;
            }
            else
            {
                evidenceTypeDescriptor.HostEvidence = HandleDuplicateEvidence(evidenceTypeDescriptor.HostEvidence, evidence, duplicateAction);
            }
        }
        private static EvidenceBase HandleDuplicateEvidence(EvidenceBase original, EvidenceBase duplicate, DuplicateEvidenceAction action)
        {
            switch (action)
            {
            case DuplicateEvidenceAction.Throw:
                throw new InvalidOperationException(Environment.GetResourceString("Policy_DuplicateEvidence", new object[] { duplicate.GetType().FullName }));

            case DuplicateEvidenceAction.Merge:
            {
                LegacyEvidenceList list = original as LegacyEvidenceList;
                if (list == null)
                {
                    list = new LegacyEvidenceList();
                    list.Add(original);
                }
                list.Add(duplicate);
                return(list);
            }

            case DuplicateEvidenceAction.SelectNewObject:
                return(duplicate);
            }
            return(null);
        }
        private void AddAssemblyEvidenceNoLock(EvidenceBase evidence, Type evidenceType, DuplicateEvidenceAction duplicateAction)
        {
            this.DeserializeTargetEvidence();
            EvidenceTypeDescriptor evidenceTypeDescriptor = this.GetEvidenceTypeDescriptor(evidenceType, true);

            this.m_version++;
            if (evidenceTypeDescriptor.AssemblyEvidence == null)
            {
                evidenceTypeDescriptor.AssemblyEvidence = evidence;
            }
            else
            {
                evidenceTypeDescriptor.AssemblyEvidence = HandleDuplicateEvidence(evidenceTypeDescriptor.AssemblyEvidence, evidence, duplicateAction);
            }
        }