/// <summary>Resolves matching code groups.</summary>
/// <returns>A <see cref="T:System.Security.Policy.CodeGroup" />.</returns>
/// <param name="evidence">The evidence for the assembly. </param>
/// <exception cref="T:System.ArgumentNullException">The <paramref name="evidence" /> parameter is null. </exception>
/// <PermissionSet>
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode" />
/// </PermissionSet>
public override CodeGroup ResolveMatchingCodeGroups(Evidence evidence)
{
if (evidence == null)
{
throw new ArgumentNullException("evidence");
}
if (!base.MembershipCondition.Check(evidence))
{
return(null);
}
CodeGroup codeGroup = this.Copy(false);
if (base.Children.Count > 0)
{
foreach (object obj in base.Children)
{
CodeGroup codeGroup2 = (CodeGroup)obj;
CodeGroup codeGroup3 = codeGroup2.ResolveMatchingCodeGroups(evidence);
if (codeGroup3 != null)
{
codeGroup.AddChild(codeGroup3);
}
}
}
return(codeGroup);
}