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); } }