public sealed class Evidence : ICollection, IEnumerable {
// Public Constructors
public Evidence( );
public Evidence(Evidence evidence);
public Evidence(object[ ] hostEvidence, object[ ] assemblyEvidence);
// Public Instance Properties
public int Count{get; }
// implements ICollection
public bool IsReadOnly{get; }
public bool IsSynchronized{get; }
// implements ICollection
public bool Locked{set; get; }
public object SyncRoot{get; }
// implements ICollection
// Public Instance Methods
public void AddAssembly(object id);
public void AddHost(object id);
public void CopyTo(Array array, int index);
// implements ICollection
public IEnumerator GetAssemblyEnumerator( );
public IEnumerator GetEnumerator( );
// implements IEnumerable
public IEnumerator GetHostEnumerator( );
public void Merge(Evidence evidence);
}
The Evidence class is a specialized collection
used to contain evidence objects. The Evidence
class actually contains two sets of evidence objects: a collection of
host evidence and a collection of assembly evidence. Host evidence is
the primary type of evidence used as input by the runtime to drive
security policy resolution. The runtime, or possibly a trusted host,
specifies the host evidence. Host evidence is added to the
Evidence collection using the AddHost(
) method and accessed through the
GetHostEnumerator( ) method.
Assembly evidence is normally specified at build time by the assembly
developer and embedded in the assembly file as a serialized resource.
As the runtime loads the assembly, it deserializes any assembly
evidence and places it inside the assembly's
Evidence collection. A trusted host can also
provide assembly evidence when it loads an assembly using the
AddAssembly( ) method, although this is uncommon.
The GetAssemblyEnumerator( ) method provides
access to the assembly evidence contained in an
Evidence collection.
Despite containing two separate collections,
Evidence also provides members to manipulate the
combined contents of both collections at once. The
Count property returns the total number of
evidence objects, and the GetEnumerator( ) method
returns a System.Collections.IEnumerator that
enumerates across all objects in the Evidence
collection.
During policy resolution, the Evidence collection
of an assembly or application domain is passed to each
CodeGroup through the CodeGroup.Resolve(
) method. The CodeGroup then passes the
Evidence collection to the
IMembershipCondition.Check( ) method of its
membership condition object. The membership condition evaluates the
Evidence collection to determine if it contains
the appropriate evidence values to qualify for
CodeGroup membership.