public Evidence(Evidence evidence) { this.m_evidence = new Dictionary <Type, EvidenceTypeDescriptor>(); if (evidence != null) { using (new EvidenceLockHolder(evidence, EvidenceLockHolder.LockType.Reader)) { foreach (KeyValuePair <Type, EvidenceTypeDescriptor> pair in evidence.m_evidence) { EvidenceTypeDescriptor descriptor = pair.Value; if (descriptor != null) { descriptor = descriptor.Clone(); } this.m_evidence[pair.Key] = descriptor; } this.m_target = evidence.m_target; this.m_locked = evidence.m_locked; this.m_deserializedTargetEvidence = evidence.m_deserializedTargetEvidence; if (evidence.Target != null) { this.m_cloneOrigin = new WeakReference(evidence); } } } this.m_evidenceLock = new ReaderWriterLock(); }
internal Evidence(IRuntimeEvidenceFactory target) { this.m_evidence = new Dictionary <Type, EvidenceTypeDescriptor>(); this.m_target = target; foreach (Type type in RuntimeEvidenceTypes) { this.m_evidence[type] = null; } this.QueryHostForPossibleEvidenceTypes(); this.m_evidenceLock = new ReaderWriterLock(); }