Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Security / Policy / Evidence.cs / 1 / Evidence.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Evidence.cs
//
// Use this class to keep a list of evidence associated with an Assembly
//
namespace System.Security.Policy {
using System;
using System.Collections;
using System.IO;
using System.Configuration.Assemblies;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Remoting;
using System.Runtime.Serialization;
using System.Security.Util;
using System.Security.Permissions;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Evidence : ICollection
{
private IList m_hostList;
private IList m_assemblyList;
private bool m_locked;
public Evidence()
{
m_hostList = null;
m_assemblyList = null;
m_locked = false;
}
public Evidence(Evidence evidence)
{
if (evidence == null)
return;
m_locked = false;
Merge( evidence );
}
public Evidence( Object[] hostEvidence, Object[] assemblyEvidence )
{
m_locked = false;
if (hostEvidence != null)
{
this.m_hostList = ArrayList.Synchronized( new ArrayList( hostEvidence ) );
}
if (assemblyEvidence != null)
{
this.m_assemblyList = ArrayList.Synchronized( new ArrayList( assemblyEvidence ) );
}
}
internal Evidence(char[] buffer)
{
int position = 0;
while (position < buffer.Length)
{
switch (buffer[position++])
{
case BuiltInEvidenceHelper.idApplicationDirectory:
{
IBuiltInEvidence ad = new ApplicationDirectory();
position = ad.InitFromBuffer(buffer, position);
AddAssembly(ad);
break;
}
#if !FEATURE_PAL
case BuiltInEvidenceHelper.idPublisher:
{
IBuiltInEvidence p = new Publisher();
position = p.InitFromBuffer(buffer, position);
AddHost(p);
break;
}
#endif // !FEATURE_PAL
case BuiltInEvidenceHelper.idStrongName:
{
IBuiltInEvidence sn = new StrongName();
position = sn.InitFromBuffer(buffer, position);
AddHost(sn);
break;
}
case BuiltInEvidenceHelper.idZone:
{
IBuiltInEvidence z = new Zone();
position = z.InitFromBuffer(buffer, position);
AddHost(z);
break;
}
case BuiltInEvidenceHelper.idUrl:
{
IBuiltInEvidence u = new Url();
position = u.InitFromBuffer(buffer, position);
AddHost(u);
break;
}
case BuiltInEvidenceHelper.idSite:
{
IBuiltInEvidence s = new Site();
position = s.InitFromBuffer(buffer, position);
AddHost(s);
break;
}
case BuiltInEvidenceHelper.idPermissionRequestEvidence:
{
IBuiltInEvidence pre = new PermissionRequestEvidence();
position = pre.InitFromBuffer(buffer, position);
AddHost(pre);
break;
}
#if !FEATURE_PAL
case BuiltInEvidenceHelper.idHash:
{
IBuiltInEvidence h = new Hash();
position = h.InitFromBuffer(buffer, position);
AddHost(h);
break;
}
#endif // !FEATURE_PAL
case BuiltInEvidenceHelper.idGac:
{
IBuiltInEvidence g = new GacInstalled();
position = g.InitFromBuffer(buffer, position);
AddHost(g);
break;
}
default:
throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));
} // switch
} // while
}
public void AddHost(Object id)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
if (m_locked)
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
m_hostList.Add( id );
}
public void AddAssembly(Object id)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
m_assemblyList.Add( id );
}
public bool Locked
{
get
{
return m_locked;
}
set
{
if (!value)
{
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
m_locked = false;
}
else
{
m_locked = true;
}
}
}
public void Merge( Evidence evidence )
{
IEnumerator enumerator;
if (evidence == null)
return;
if (evidence.m_hostList != null)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
if (evidence.m_hostList.Count != 0 && this.m_locked)
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
enumerator = evidence.m_hostList.GetEnumerator();
while (enumerator.MoveNext())
{
m_hostList.Add( enumerator.Current );
}
}
if (evidence.m_assemblyList != null)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
enumerator = evidence.m_assemblyList.GetEnumerator();
while (enumerator.MoveNext())
{
m_assemblyList.Add( enumerator.Current );
}
}
}
// Same as merge, except only one instance of any one evidence type is
// allowed. When duplicates are found, the evidence in the input
// argument will have priority.
internal void MergeWithNoDuplicates( Evidence evidence )
{
IEnumerator oldEnumerator, newEnumerator;
if (evidence == null)
return;
if (evidence.m_hostList != null)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
newEnumerator = evidence.m_hostList.GetEnumerator();
while (newEnumerator.MoveNext())
{
Type newItemType = newEnumerator.Current.GetType();
oldEnumerator = m_hostList.GetEnumerator();
while (oldEnumerator.MoveNext())
{
if (oldEnumerator.Current.GetType() == newItemType)
{
m_hostList.Remove(oldEnumerator.Current);
break;
}
}
m_hostList.Add( newEnumerator.Current );
}
}
if (evidence.m_assemblyList != null)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
newEnumerator = evidence.m_assemblyList.GetEnumerator();
while (newEnumerator.MoveNext())
{
Type newItemType = newEnumerator.Current.GetType();
oldEnumerator = m_assemblyList.GetEnumerator();
while (oldEnumerator.MoveNext())
{
if (oldEnumerator.Current.GetType() == newItemType)
{
m_assemblyList.Remove(oldEnumerator.Current);
break;
}
}
m_assemblyList.Add( newEnumerator.Current );
}
}
}
// ICollection implementation
public void CopyTo(Array array, int index)
{
int currentIndex = index;
if (m_hostList != null)
{
m_hostList.CopyTo( array, currentIndex );
currentIndex += m_hostList.Count;
}
if (m_assemblyList != null)
{
m_assemblyList.CopyTo( array, currentIndex );
}
}
public IEnumerator GetHostEnumerator()
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
return m_hostList.GetEnumerator();
}
public IEnumerator GetAssemblyEnumerator()
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
return m_assemblyList.GetEnumerator();
}
public IEnumerator GetEnumerator()
{
return new EvidenceEnumerator( this );
}
public int Count
{
get { return (m_hostList != null ? m_hostList.Count : 0) + (m_assemblyList != null ? m_assemblyList.Count : 0); }
}
public Object SyncRoot
{
get { return this; }
}
public bool IsSynchronized
{
get { return false; }
}
public bool IsReadOnly
{
get { return false; }
}
internal Evidence Copy()
{
// Try the fast way. Will only work if all evidence components implement IBuiltInEvidence
char[] serEvidence = PolicyManager.MakeEvidenceArray(this, true);
if (serEvidence != null)
{
return new Evidence(serEvidence);
}
// Use the general purpose formatter
new PermissionSet( true ).Assert();
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize( stream, this );
stream.Position = 0;
return (Evidence)formatter.Deserialize( stream );
}
internal Evidence ShallowCopy()
{
Evidence evidence = new Evidence();
IEnumerator enumerator;
enumerator = this.GetHostEnumerator();
while (enumerator.MoveNext())
{
evidence.AddHost( enumerator.Current );
}
enumerator = this.GetAssemblyEnumerator();
while (enumerator.MoveNext())
{
evidence.AddAssembly( enumerator.Current );
}
return evidence;
}
[ComVisible(false)]
public void Clear()
{
m_hostList = null;
m_assemblyList = null;
}
[ComVisible(false)]
public void RemoveType(Type t)
{
int i;
for(i = 0; i < (m_hostList == null ? 0 : m_hostList.Count); i++)
{
if (m_hostList[i].GetType() == t)
m_hostList.RemoveAt(i--);
}
for(i = 0; i < (m_assemblyList == null ? 0 : m_assemblyList.Count); i++)
{
if (m_assemblyList[i].GetType() == t)
m_assemblyList.RemoveAt(i--);
}
}
[ComVisible(false)]
public override bool Equals( Object obj )
{
Evidence other = obj as Evidence;
if (other == null)
return false;
if (this.m_hostList != null && other.m_hostList != null)
{
if (this.m_hostList.Count != other.m_hostList.Count)
return false;
int count = this.m_hostList.Count;
for (int i = 0; i < count; ++i)
{
bool found = false;
for (int j = 0; j < count; ++j)
{
if (Object.Equals( this.m_hostList[i], other.m_hostList[j] ))
{
found = true;
break;
}
}
if (!found)
return false;
}
}
else if (this.m_hostList != null || other.m_hostList != null)
{
return false;
}
if (this.m_assemblyList != null && other.m_assemblyList != null)
{
if (this.m_assemblyList.Count != other.m_assemblyList.Count)
return false;
int count = this.m_assemblyList.Count;
for (int i = 0; i < count; ++i)
{
bool found = false;
for (int j = 0; j < count; ++j)
{
if (Object.Equals( m_assemblyList[i], other.m_assemblyList[j] ))
{
found = true;
break;
}
}
if (!found)
return false;
}
}
else if (this.m_assemblyList != null || other.m_assemblyList != null)
{
return false;
}
return true;
}
[ComVisible(false)]
public override int GetHashCode()
{
int accumulator = 0;
if (this.m_hostList != null)
{
int count = this.m_hostList.Count;
for (int i = 0; i < count; ++i)
{
accumulator = accumulator ^ this.m_hostList[i].GetHashCode();
}
}
if (this.m_assemblyList != null)
{
int count = this.m_assemblyList.Count;
for (int i = 0; i < count; ++i)
{
accumulator = accumulator ^ this.m_assemblyList[i].GetHashCode();
}
}
return accumulator;
}
internal Object FindType(Type t)
{
int i;
for(i = 0; i < (m_hostList == null ? 0 : m_hostList.Count); i++)
{
if (m_hostList[i].GetType() == t)
return m_hostList[i];
}
for(i = 0; i < (m_assemblyList == null ? 0 : m_assemblyList.Count); i++)
{
if (m_assemblyList[i].GetType() == t)
return m_hostList[i];
}
return null;
}
///
/// Mark all of the evidence in the collection as having been used
///
internal void MarkAllEvidenceAsUsed()
{
foreach (object o in this)
{
IDelayEvaluatedEvidence delayEvidence = o as IDelayEvaluatedEvidence;
if (delayEvidence != null)
{
delayEvidence.MarkUsed();
}
}
}
///
/// Determine if delay evaluated strong name evidence is contained in this collection, and if so
/// if it was used during policy evaluation.
///
/// This method is called from the VM in SecurityPolicy::WasStrongNameEvidenceUsed
///
private bool WasStrongNameEvidenceUsed()
{
IDelayEvaluatedEvidence snEvidence = FindType(typeof(StrongName)) as IDelayEvaluatedEvidence;
return snEvidence != null && snEvidence.WasUsed;
}
}
sealed class EvidenceEnumerator : IEnumerator
{
private bool m_first;
private Evidence m_evidence;
private IEnumerator m_enumerator;
public EvidenceEnumerator( Evidence evidence )
{
this.m_evidence = evidence;
Reset();
}
public bool MoveNext()
{
if (m_enumerator == null)
{
return false;
}
if (!m_enumerator.MoveNext())
{
if (m_first)
{
m_enumerator = m_evidence.GetAssemblyEnumerator();
m_first = false;
if (m_enumerator != null)
return m_enumerator.MoveNext();
else
return false;
}
else
{
return false;
}
}
return true;
}
public Object Current
{
get {
if (m_enumerator == null)
return null;
else
return m_enumerator.Current;
}
}
public void Reset() {
this.m_first = true;
if (m_evidence != null)
{
m_enumerator = m_evidence.GetHostEnumerator();
}
else
{
m_enumerator = null;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Evidence.cs
//
// Use this class to keep a list of evidence associated with an Assembly
//
namespace System.Security.Policy {
using System;
using System.Collections;
using System.IO;
using System.Configuration.Assemblies;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Remoting;
using System.Runtime.Serialization;
using System.Security.Util;
using System.Security.Permissions;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Evidence : ICollection
{
private IList m_hostList;
private IList m_assemblyList;
private bool m_locked;
public Evidence()
{
m_hostList = null;
m_assemblyList = null;
m_locked = false;
}
public Evidence(Evidence evidence)
{
if (evidence == null)
return;
m_locked = false;
Merge( evidence );
}
public Evidence( Object[] hostEvidence, Object[] assemblyEvidence )
{
m_locked = false;
if (hostEvidence != null)
{
this.m_hostList = ArrayList.Synchronized( new ArrayList( hostEvidence ) );
}
if (assemblyEvidence != null)
{
this.m_assemblyList = ArrayList.Synchronized( new ArrayList( assemblyEvidence ) );
}
}
internal Evidence(char[] buffer)
{
int position = 0;
while (position < buffer.Length)
{
switch (buffer[position++])
{
case BuiltInEvidenceHelper.idApplicationDirectory:
{
IBuiltInEvidence ad = new ApplicationDirectory();
position = ad.InitFromBuffer(buffer, position);
AddAssembly(ad);
break;
}
#if !FEATURE_PAL
case BuiltInEvidenceHelper.idPublisher:
{
IBuiltInEvidence p = new Publisher();
position = p.InitFromBuffer(buffer, position);
AddHost(p);
break;
}
#endif // !FEATURE_PAL
case BuiltInEvidenceHelper.idStrongName:
{
IBuiltInEvidence sn = new StrongName();
position = sn.InitFromBuffer(buffer, position);
AddHost(sn);
break;
}
case BuiltInEvidenceHelper.idZone:
{
IBuiltInEvidence z = new Zone();
position = z.InitFromBuffer(buffer, position);
AddHost(z);
break;
}
case BuiltInEvidenceHelper.idUrl:
{
IBuiltInEvidence u = new Url();
position = u.InitFromBuffer(buffer, position);
AddHost(u);
break;
}
case BuiltInEvidenceHelper.idSite:
{
IBuiltInEvidence s = new Site();
position = s.InitFromBuffer(buffer, position);
AddHost(s);
break;
}
case BuiltInEvidenceHelper.idPermissionRequestEvidence:
{
IBuiltInEvidence pre = new PermissionRequestEvidence();
position = pre.InitFromBuffer(buffer, position);
AddHost(pre);
break;
}
#if !FEATURE_PAL
case BuiltInEvidenceHelper.idHash:
{
IBuiltInEvidence h = new Hash();
position = h.InitFromBuffer(buffer, position);
AddHost(h);
break;
}
#endif // !FEATURE_PAL
case BuiltInEvidenceHelper.idGac:
{
IBuiltInEvidence g = new GacInstalled();
position = g.InitFromBuffer(buffer, position);
AddHost(g);
break;
}
default:
throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));
} // switch
} // while
}
public void AddHost(Object id)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
if (m_locked)
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
m_hostList.Add( id );
}
public void AddAssembly(Object id)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
m_assemblyList.Add( id );
}
public bool Locked
{
get
{
return m_locked;
}
set
{
if (!value)
{
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
m_locked = false;
}
else
{
m_locked = true;
}
}
}
public void Merge( Evidence evidence )
{
IEnumerator enumerator;
if (evidence == null)
return;
if (evidence.m_hostList != null)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
if (evidence.m_hostList.Count != 0 && this.m_locked)
new SecurityPermission( SecurityPermissionFlag.ControlEvidence ).Demand();
enumerator = evidence.m_hostList.GetEnumerator();
while (enumerator.MoveNext())
{
m_hostList.Add( enumerator.Current );
}
}
if (evidence.m_assemblyList != null)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
enumerator = evidence.m_assemblyList.GetEnumerator();
while (enumerator.MoveNext())
{
m_assemblyList.Add( enumerator.Current );
}
}
}
// Same as merge, except only one instance of any one evidence type is
// allowed. When duplicates are found, the evidence in the input
// argument will have priority.
internal void MergeWithNoDuplicates( Evidence evidence )
{
IEnumerator oldEnumerator, newEnumerator;
if (evidence == null)
return;
if (evidence.m_hostList != null)
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
newEnumerator = evidence.m_hostList.GetEnumerator();
while (newEnumerator.MoveNext())
{
Type newItemType = newEnumerator.Current.GetType();
oldEnumerator = m_hostList.GetEnumerator();
while (oldEnumerator.MoveNext())
{
if (oldEnumerator.Current.GetType() == newItemType)
{
m_hostList.Remove(oldEnumerator.Current);
break;
}
}
m_hostList.Add( newEnumerator.Current );
}
}
if (evidence.m_assemblyList != null)
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
newEnumerator = evidence.m_assemblyList.GetEnumerator();
while (newEnumerator.MoveNext())
{
Type newItemType = newEnumerator.Current.GetType();
oldEnumerator = m_assemblyList.GetEnumerator();
while (oldEnumerator.MoveNext())
{
if (oldEnumerator.Current.GetType() == newItemType)
{
m_assemblyList.Remove(oldEnumerator.Current);
break;
}
}
m_assemblyList.Add( newEnumerator.Current );
}
}
}
// ICollection implementation
public void CopyTo(Array array, int index)
{
int currentIndex = index;
if (m_hostList != null)
{
m_hostList.CopyTo( array, currentIndex );
currentIndex += m_hostList.Count;
}
if (m_assemblyList != null)
{
m_assemblyList.CopyTo( array, currentIndex );
}
}
public IEnumerator GetHostEnumerator()
{
if (m_hostList == null)
m_hostList = ArrayList.Synchronized( new ArrayList() );
return m_hostList.GetEnumerator();
}
public IEnumerator GetAssemblyEnumerator()
{
if (m_assemblyList == null)
m_assemblyList = ArrayList.Synchronized( new ArrayList() );
return m_assemblyList.GetEnumerator();
}
public IEnumerator GetEnumerator()
{
return new EvidenceEnumerator( this );
}
public int Count
{
get { return (m_hostList != null ? m_hostList.Count : 0) + (m_assemblyList != null ? m_assemblyList.Count : 0); }
}
public Object SyncRoot
{
get { return this; }
}
public bool IsSynchronized
{
get { return false; }
}
public bool IsReadOnly
{
get { return false; }
}
internal Evidence Copy()
{
// Try the fast way. Will only work if all evidence components implement IBuiltInEvidence
char[] serEvidence = PolicyManager.MakeEvidenceArray(this, true);
if (serEvidence != null)
{
return new Evidence(serEvidence);
}
// Use the general purpose formatter
new PermissionSet( true ).Assert();
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize( stream, this );
stream.Position = 0;
return (Evidence)formatter.Deserialize( stream );
}
internal Evidence ShallowCopy()
{
Evidence evidence = new Evidence();
IEnumerator enumerator;
enumerator = this.GetHostEnumerator();
while (enumerator.MoveNext())
{
evidence.AddHost( enumerator.Current );
}
enumerator = this.GetAssemblyEnumerator();
while (enumerator.MoveNext())
{
evidence.AddAssembly( enumerator.Current );
}
return evidence;
}
[ComVisible(false)]
public void Clear()
{
m_hostList = null;
m_assemblyList = null;
}
[ComVisible(false)]
public void RemoveType(Type t)
{
int i;
for(i = 0; i < (m_hostList == null ? 0 : m_hostList.Count); i++)
{
if (m_hostList[i].GetType() == t)
m_hostList.RemoveAt(i--);
}
for(i = 0; i < (m_assemblyList == null ? 0 : m_assemblyList.Count); i++)
{
if (m_assemblyList[i].GetType() == t)
m_assemblyList.RemoveAt(i--);
}
}
[ComVisible(false)]
public override bool Equals( Object obj )
{
Evidence other = obj as Evidence;
if (other == null)
return false;
if (this.m_hostList != null && other.m_hostList != null)
{
if (this.m_hostList.Count != other.m_hostList.Count)
return false;
int count = this.m_hostList.Count;
for (int i = 0; i < count; ++i)
{
bool found = false;
for (int j = 0; j < count; ++j)
{
if (Object.Equals( this.m_hostList[i], other.m_hostList[j] ))
{
found = true;
break;
}
}
if (!found)
return false;
}
}
else if (this.m_hostList != null || other.m_hostList != null)
{
return false;
}
if (this.m_assemblyList != null && other.m_assemblyList != null)
{
if (this.m_assemblyList.Count != other.m_assemblyList.Count)
return false;
int count = this.m_assemblyList.Count;
for (int i = 0; i < count; ++i)
{
bool found = false;
for (int j = 0; j < count; ++j)
{
if (Object.Equals( m_assemblyList[i], other.m_assemblyList[j] ))
{
found = true;
break;
}
}
if (!found)
return false;
}
}
else if (this.m_assemblyList != null || other.m_assemblyList != null)
{
return false;
}
return true;
}
[ComVisible(false)]
public override int GetHashCode()
{
int accumulator = 0;
if (this.m_hostList != null)
{
int count = this.m_hostList.Count;
for (int i = 0; i < count; ++i)
{
accumulator = accumulator ^ this.m_hostList[i].GetHashCode();
}
}
if (this.m_assemblyList != null)
{
int count = this.m_assemblyList.Count;
for (int i = 0; i < count; ++i)
{
accumulator = accumulator ^ this.m_assemblyList[i].GetHashCode();
}
}
return accumulator;
}
internal Object FindType(Type t)
{
int i;
for(i = 0; i < (m_hostList == null ? 0 : m_hostList.Count); i++)
{
if (m_hostList[i].GetType() == t)
return m_hostList[i];
}
for(i = 0; i < (m_assemblyList == null ? 0 : m_assemblyList.Count); i++)
{
if (m_assemblyList[i].GetType() == t)
return m_hostList[i];
}
return null;
}
///
/// Mark all of the evidence in the collection as having been used
///
internal void MarkAllEvidenceAsUsed()
{
foreach (object o in this)
{
IDelayEvaluatedEvidence delayEvidence = o as IDelayEvaluatedEvidence;
if (delayEvidence != null)
{
delayEvidence.MarkUsed();
}
}
}
///
/// Determine if delay evaluated strong name evidence is contained in this collection, and if so
/// if it was used during policy evaluation.
///
/// This method is called from the VM in SecurityPolicy::WasStrongNameEvidenceUsed
///
private bool WasStrongNameEvidenceUsed()
{
IDelayEvaluatedEvidence snEvidence = FindType(typeof(StrongName)) as IDelayEvaluatedEvidence;
return snEvidence != null && snEvidence.WasUsed;
}
}
sealed class EvidenceEnumerator : IEnumerator
{
private bool m_first;
private Evidence m_evidence;
private IEnumerator m_enumerator;
public EvidenceEnumerator( Evidence evidence )
{
this.m_evidence = evidence;
Reset();
}
public bool MoveNext()
{
if (m_enumerator == null)
{
return false;
}
if (!m_enumerator.MoveNext())
{
if (m_first)
{
m_enumerator = m_evidence.GetAssemblyEnumerator();
m_first = false;
if (m_enumerator != null)
return m_enumerator.MoveNext();
else
return false;
}
else
{
return false;
}
}
return true;
}
public Object Current
{
get {
if (m_enumerator == null)
return null;
else
return m_enumerator.Current;
}
}
public void Reset() {
this.m_first = true;
if (m_evidence != null)
{
m_enumerator = m_evidence.GetHostEnumerator();
}
else
{
m_enumerator = null;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- KerberosReceiverSecurityToken.cs
- SecurityRuntime.cs
- WriteFileContext.cs
- PrinterUnitConvert.cs
- MethodImplAttribute.cs
- ContractNamespaceAttribute.cs
- ArcSegment.cs
- FormatConvertedBitmap.cs
- BindUriHelper.cs
- InheritanceAttribute.cs
- COAUTHINFO.cs
- AbstractDataSvcMapFileLoader.cs
- RayHitTestParameters.cs
- TemplateControlBuildProvider.cs
- RequiredAttributeAttribute.cs
- PropertyGridCommands.cs
- StrokeCollection2.cs
- TextBoxBase.cs
- DataBoundControl.cs
- ListSortDescriptionCollection.cs
- ThemeableAttribute.cs
- Rectangle.cs
- AudioSignalProblemOccurredEventArgs.cs
- LeafCellTreeNode.cs
- ProviderCollection.cs
- XmlComplianceUtil.cs
- XamlDesignerSerializationManager.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- Part.cs
- WeakReference.cs
- SocketCache.cs
- X509Utils.cs
- WebConfigurationHost.cs
- TextOptionsInternal.cs
- VisualBasicImportReference.cs
- oledbmetadatacollectionnames.cs
- AgileSafeNativeMemoryHandle.cs
- PerformanceCounterTraceRecord.cs
- DataGridViewColumnEventArgs.cs
- BasicExpressionVisitor.cs
- SafeCryptoHandles.cs
- ProfileModule.cs
- NameHandler.cs
- Variant.cs
- DataGridViewRowCancelEventArgs.cs
- DrawingCollection.cs
- LinqDataSourceDisposeEventArgs.cs
- ToolStripPanel.cs
- HtmlElementErrorEventArgs.cs
- SqlCachedBuffer.cs
- PackageRelationshipSelector.cs
- DelayedRegex.cs
- CalloutQueueItem.cs
- ColorConvertedBitmap.cs
- SQLInt32.cs
- RegisteredArrayDeclaration.cs
- GraphicsPath.cs
- SourceFileInfo.cs
- CurrencyWrapper.cs
- FormsAuthenticationCredentials.cs
- HttpCookieCollection.cs
- RegistryExceptionHelper.cs
- ObjectDataSourceSelectingEventArgs.cs
- DesignBindingPicker.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- WindowsFormsLinkLabel.cs
- RawTextInputReport.cs
- BulletedListEventArgs.cs
- SerializeAbsoluteContext.cs
- VisualProxy.cs
- DesignerAutoFormat.cs
- PropagatorResult.cs
- ServiceNotStartedException.cs
- XslCompiledTransform.cs
- OleDbMetaDataFactory.cs
- CodeAttributeDeclarationCollection.cs
- FormattedTextSymbols.cs
- DelegateHelpers.Generated.cs
- MediaElement.cs
- StylusButtonCollection.cs
- LabelAutomationPeer.cs
- SwitchAttribute.cs
- WebPartEditorCancelVerb.cs
- DataRecordObjectView.cs
- DataGridColumn.cs
- RectangleHotSpot.cs
- UnmanagedMemoryStream.cs
- DetailsViewUpdateEventArgs.cs
- SiteMapNodeItem.cs
- Visitors.cs
- ConfigurationHelpers.cs
- DeclaredTypeElement.cs
- PassportAuthenticationEventArgs.cs
- HandlerFactoryWrapper.cs
- KeySpline.cs
- arabicshape.cs
- _KerberosClient.cs
- Viewport3DVisual.cs
- TrackingRecord.cs
- WebPartCatalogAddVerb.cs