public override IPermission Intersect(IPermission target)
{
if (target != null)
{
if (!base.VerifyType(target))
{
throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", new object[] { base.GetType().FullName }));
}
KeyContainerPermission permission = (KeyContainerPermission)target;
if (this.IsEmpty() || permission.IsEmpty())
{
return(null);
}
KeyContainerPermissionFlags flags = permission.m_flags & this.m_flags;
KeyContainerPermission permission2 = new KeyContainerPermission(flags);
KeyContainerPermissionAccessEntryEnumerator enumerator = this.AccessEntries.GetEnumerator();
while (enumerator.MoveNext())
{
KeyContainerPermissionAccessEntry current = enumerator.Current;
permission2.AddAccessEntryAndIntersect(current, permission);
}
KeyContainerPermissionAccessEntryEnumerator enumerator2 = permission.AccessEntries.GetEnumerator();
while (enumerator2.MoveNext())
{
KeyContainerPermissionAccessEntry accessEntry = enumerator2.Current;
permission2.AddAccessEntryAndIntersect(accessEntry, this);
}
if (!permission2.IsEmpty())
{
return(permission2);
}
}
return(null);
}