public static PermissionSet ResolvePolicy (Evidence evidence)
{
// no evidence, no permission
if (evidence == null)
return new PermissionSet (PermissionState.None);
PermissionSet ps = null;
// Note: can't call PolicyHierarchy since ControlPolicy isn't required to resolve policies
IEnumerator ple = Hierarchy;
while (ple.MoveNext ()) {
PolicyLevel pl = (PolicyLevel) ple.Current;
if (ResolvePolicyLevel (ref ps, pl, evidence)) {
break; // i.e. PolicyStatementAttribute.LevelFinal
}
}
ResolveIdentityPermissions (ps, evidence);
return ps;
}