public override IPermission Intersect(IPermission target)
{
// Handle the easy cases first.
if (target == null)
{
return(target);
}
else if (!(target is FileIOPermission))
{
throw new ArgumentException(_("Arg_PermissionMismatch"));
}
else if (((FileIOPermission)target).IsUnrestricted())
{
return(Copy());
}
else if (IsUnrestricted())
{
return(target.Copy());
}
// Create a new object and intersect the lists.
return(new FileIOPermission
(PermissionState.None,
EnvironmentPermission.Intersect(readList,
((FileIOPermission)target).readList),
EnvironmentPermission.Intersect(writeList,
((FileIOPermission)target).writeList),
EnvironmentPermission.Intersect(appendList,
((FileIOPermission)target).appendList),
EnvironmentPermission.Intersect(discoveryList,
((FileIOPermission)target).discoveryList),
allLocalFiles & ((FileIOPermission)target).allLocalFiles,
allFiles & ((FileIOPermission)target).allFiles));
}